vuejs项目中,遇到要判断data中的对象是否为空……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var vm = new Vue({
el:'#demo',
data:{
msg:'hello',
ms:{}
},
created (){
let that = this;
console.log(that.ms);
console.log(that.msg);
console.log(that.ms === null);//false
if(that.ms){//true
console.log(1);//1,
};
console.log(that.ms === undefined);//false
for(var attr in that.ms){
console.log(attr);
console.log('2');
}
//console.log('3');
}
});

点击查看详情vuejs

jquery有工具方法$.isEmptyObject(),查看源码发现这样实现的。

1
2
3
4
5
6
7
isEmptyObject:function(obj){
var name;
for(name in obj){
return false;
}
return true;
}

这是利用了for in无法循环到系统自带的属性值。

1
2
3
4
5
6
7
8
9
//比如:
function Watch(){}
//Watch.prototype.constructor = Watch;
//系统自己生成。写出来这句也无法用for in循环到。
for (var attr in Watch.prototype){
console.log('can not console');//无法输出。
}
//如果自己写,则可以输出show.
Watch.prototype.show = function(){}

这时想起了js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
$.isPlainObject()方法:判断”纯粹的对象”,就是该对象是通过”{}”或”new Object”创建的。
$.isPlainObject( document.location ) ); // false(在IE中返回true)

参考资料:汤姆大叔博客

小结:js一切皆为对象,了解面对对象编程很有好处。能研究一遍jquery源码,定能更上一层楼。

本文地址: https://lxchuan12.github.io/2016/08/27/20160827-Judge-null-object-by-javascript/