预定义如下对象:
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});
for in
用于遍历自身和原型对象的可枚举的属性
for (let key in obj) {
console.log(key)
}
输出:
mykey
myFun
parentKey
parentFun
Object.keys()方法
用于返回对象自身的所有可枚举属性
Object.keys(obj)
输出:
["mykey", "myFun"]
Object.getOwnPropertyNames()方法
用于返回对象自身所有属性,包含可枚举属性和不可枚举属性,不包含Symbol属性
Object.getOwnPropertyNames(obj)
输出:
["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc"]
Object.getOwnPropertySymbols()方法
用于返回对象所有Symbol属性,包含可枚举属性和不可枚举属性
Object.getOwnPropertySymbols(obj)
输出:
[Symbol()]
Reflect.ownKeys()方法
用于返回对象所有属性,包含可枚举属性和不可枚举属性和Symbol属性
Reflect.ownKeys(obj)
输出:
["mykey", "myFun", "myUnemurableKey", "myUnenmurableFunc", Symbol()]
Object.getOwnPropertyDescriptors方法
这个方法可以返回对象自身所有属性和属性描述对象。
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
}
}
网友评论