var data={}
var b=(JSON.stringify(data) =='{}')
if(b==true){
console.log('是的')
}else{
console.log('不是')
}
2.for in 循环判断
var obj = {}
var b = function() {
for(var key in obj) {
return false
}
return true
}
alert(b())//true
4.Object.getOwnPropertyNames()方法
此方法是使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空
注意:此方法不兼容ie8,其余浏览器没有测试
var data = {}
var arr = Object.getOwnPropertyNames(data)
alert(arr.length == 0)//true
5.使用ES6的Object.keys()方法
与4方法类似,是ES6的新方法, 返回值也是对象中属性名组成的数组
var data = {}
var arr = Object.keys(data)
alert(arr.length == 0)//true
6.Object.keys(res.data.list).map(id =>{
let bankList = {
code: id,
text: res.data.list[id]
}
this.columns.push(bankList)
})
因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要:方一:通过length属性:一般情况下对象没有length属性值,其值为undefiend,而数组的length值为number类型
缺点:非常不实用,当对象的属性存在length,且其值为number(比如类数组),则该方法失效,不建议使用,看看即可。
*方二:通过instanceof来判断区分
var arr = [1, 2, 3] var obj = {name: 'lyl',age: 18,1: 'name'}console.log(arr instanceof Array)//trueconsole.log(obj instanceof Array)//false
*方三:通过constructor
var arr = [1, 2, 3] var obj = {name: 'lyl',age: 18,1: 'name'}console.log(arr.constructor === Array)//trueconsole.log(obj.constructor === Array)//false
本来判断一个对象类型用typeof是最好的,不过对于Array类型是不适用的可以使用 instanceof操作符
var arrayStr=new Array("1","2","3","4","5")
alert(arrayStr instanceof Array)
当然以上在一个简单的页面布局里面是没有问题的,如果是复杂页面情况,入获取的是frame内部的Array对象,可以用这个函数判断:
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]'
}