json对象的判断
2019-07-30 本文已影响0人
魅眼ALong
- 是否空对象
var data = {};
var b = JSON.stringify(data) == "{}";
alert(b); //true
- 判断是否存在对象 Object 的 hasOwnProperty() 方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
function foo() {
this.name = 'foo'
this.sayHi = function () {
console.log('Say Hi')
}
}
foo.prototype.sayBye = function () {
console.log('Bye');
}
//方法1
foo.hasOwnProperty('name');//true
//方法2
console.log('sayBye ' in foo) // true
//方法3 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'sayhello'); // false
//方法4 还是最为稳妥去 遍历 for in (若返回结果 undefined ;hasOwnProperty无论什么判断都会返回true,
- 判断对象属性是否是原型中的属性
hasOwnProperty()方法:用于判断自身含有的属性存在与对象实例中
in操作符:只要通过对象能访问到属性就返回true。
//所以需要判断:
!obj.hasOwnProperty(name);
(name in obj); //true
- 判断对象的具体类型 Object.prototype.toString.call()
var str = 'hello';
console.log(Object.prototype.toString.call(str));//[object String]
var bool = true;
console.log(Object.prototype.toString.call(bool))//[object Boolean]
var num = 123;
console.log(Object.prototype.toString.call(num));//[object Number]
var nul = null;
console.log(Object.prototype.toString.call(nul));//[object Null]
var und = undefined;
console.log(Object.prototype.toString.call(und));//[object Undefined]
var oDate = new Date();
console.log(Object.prototype.toString.call(oDate));//[object Date]
var json = {};
console.log(Object.prototype.toString.call(json));//[object Object]
var arr = [];
console.log(Object.prototype.toString.call(arr));//[object Array]
var reg = /a/;
console.log(Object.prototype.toString.call(reg));//[object RegExp]
var fun = function(){};
console.log(Object.prototype.toString.call(fun));//[object Function]
var error = new Error();
console.log(Object.prototype.toString.call(error));//[object Error]
image.png
从这个结果也可以看出,不管是什么类型的,Object.prototype.toString.call();都可以判断出其具体的类型。