预约义以下对象:prototype
Object.prototype.parentKey = 'pValue'; Object.prototype.parentFun = function(){}; let obj = { mykey: 'value', myFun: function(){}, [Symbol()]:'symbolValue' } // 在obj上定义2个不可枚举的属性 Object.defineProperty(obj, 'myUnemurableKey', {value:'value22', enumerable:false}); Object.defineProperty(obj, 'myUnenmurableFunc', {value:function(){}, enumrable:false});
用于遍历自身和原型对象的可枚举的属性code
for (let key in obj) { console.log(key) }
输出:
mykey
myFun
parentKey
parentFun对象
用于返回对象自身的全部可枚举属性ip
Object.keys(obj)
输出:
["mykey", "myFun"]get
用于返回对象全部属性,包含可枚举属性和不可枚举属性,不包含Symbol属性原型
Object.getOwnPropertyNames(obj)
输出:
["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc"]it
用于返回对象全部属性,包含可枚举属性和不可枚举属性,只包含Symbol属性io
Object.getOwnPropertySymbols(obj)
输出:
[Symbol()]console
用于返回对象全部属性,包含可枚举属性和不可枚举属性,也包含Symbol属性table
Reflect.ownKeys(obj)
输出:
["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc", Symbol()]
这个方法能够返回对象自身全部属性的描述对象,包含key, value, writable, enumerable, configurable。
Object.getOwnPropertyDescriptors(obj)
输出:
{ "mykey": { "value": "value", "writable": true, "enumerable": true, "configurable": true }, "myFun": { "writable": true, "enumerable": true, "configurable": true }, "myUnemurableKey": { "value": "value22", "writable": false, "enumerable": false, "configurable": false }, "myUnenmurableFunc": { "writable": false, "enumerable": false, "configurable": false } }