1 // 如何在不访问属性值的情况下判断对象中是否存在这个属性 2 var obj = { 3 a: 2 4 }; 5 6 Object.defineProperty( 7 obj, 8 'b', 9 // 让 b 不可枚举 10 { 11 enumerable: false, 12 value: 3 13 } 14 ); 15 // in 操作符会检查属性是否在对象及其 [[Prototype]] 原型链中,而 hasOwnProperty()只会检查属性是否在对象中 16 console.log('a' in obj); 17 console.log('b' in obj); 18 19 console.log(obj.hasOwnProperty('a')); 20 console.log(obj.hasOwnProperty('b')); 21 22 // propertyIsEnumerable(..) 检查属性名是否直接存在于对象中,并且是可枚举的 23 console.log(obj.propertyIsEnumerable( 'a' )); 24 console.log(obj.propertyIsEnumerable( 'b' )); 25 26 // Object.keys(..)会返回一个包含可枚举的属性的数组 27 console.log(Object.keys( obj )); 28 // Object.getOwnPropertyNames(..)返回一个包含所有属性的数组,不管能不能枚举 29 console.log(Object.getOwnPropertyNames( obj ));
作者:狂流
出处:http://www.cnblogs.com/kuangliu/
欢迎转载,分享快乐! 如果觉得这篇文章对你有用,请抖抖小手,推荐一下!