toString是不能转对象的,结果只能得到[object Object],对象转换为字符串有专门的方法JSON.Stringfy();Array用toString转的话,相当于join(',');
前提
let obj = {};
0、如何判定一个数据是对象?
先来回忆下数组的判定,1、instanceof,2、isArray,3、constructor&indexOf,4、prototype&indexOf,那么对象的判定是否有异曲同工之妙?
0-1、instanceof
obj instanceof Object
0-2、constructor&indexof 同数组
obj.constructor.toString().indexOf('Object');
0-3、prototype,同数组
Object.prototype.toString.call(obj) === "[object Object]"
1、ES6,Object.keys()
Object.keys(obj).length === 0; // 获取对象的属性,是一个数组
2、JSON字符串
if (JSON.Stringfy(obj) === '{}') {
// 是对象
}
3、循环
function isEmpty(object) {
for (let key in object) {
return false;
};
return true;
}
4、Object.getOwnPropertyNames()
同ES6的Object.keys()
扩展
给所有对象加方法getLen,调用之后获取自身长度
Object.prototype.getLen = function () {
return Object.keys(this).length;
}
let objLen = obj.getLen();
网友评论