基于14种内建方法形成的API
3.获取对象的可扩展性[[IsExtensible]]
var extensible = Object.isExtensible(obj)
console.log(extensible)
Object.freeze(obj) //true
var extensible2 = Object.isExtensible(obj)
console.log(extensible2) //false
//封闭对象
Object.seal(obj)
obj.c = 3 //不可修改
delete obj.a //不可删除
obj.b = 3 // 可写
for(var key in obj) {
console.log(obj[key]) //可读
}
//冻结对象
Object.freeze(obj)
obj.c = 3 //不可修改
delete obj.a //不可删除
obj.b = 3 // 不可写
for(var key in obj) {
console.log(obj[key]) //可读
}
5.Object.preventExtensions(obj) [[PreventExtensions]]禁止扩展对象
禁止增加属性,可以删除属性
- obj.c = 3 (x)
- delete obj.a (√)
6.Object.defineProperty() [[DefineProperty]]拦截对象操作
7.Object.hasOwnProperty('key') 判断是否是自身属性
8.[[GET]] 获取值
console.log('a' in obj) 即底层用get方法实现
9.[[SET]] 赋值
obj.a = 3 obj['a'] = 4
10.[[DELETE]] 删除
delete obj.a
11.[[Enumerate]] 枚举
for (var k in obj) { console.log(obj[k]) }
12. 获取键集合 [[OwnPropertyKeys]] 自有key
console.log(Object.keys(obj))