-
getOwnPropertySymbols
获取对象中所有Symbol类型的key
const a = Symbol('a'); let obj = {}; obj[a] == 11; Object.getOwnPropertySymbols(a); > Symbol(a)
-
getOwnPropertyNames
返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组
let scc= {age:11} Object.getOwnPropertyNames(scc) > ["age"]
-
Object.defineProperty(obj, prop, descriptor)
在对象上定义属性,并描述属性的状态,比如
configurable: false, writable: true, enumerable: true, value: '张三'
let a= {}; Object.defineProperty(a,age,{ writable:false,//是否可以被改写,不会报错。 enumerable:false,//是否可以被枚举 configurable:true,//是否可以被删除 value:22//属性的值, get:func,//取值时会触发 set:func//设置值时会触发 })
-
Object.defineProperties
与上面的区别就是,第二个参数同时定义属性名,和描述
Object.defineProperties(obj, { name: { value: '张三', configurable: false, writable: true, enumerable: true }, age: { value: 18, configurable: true } })
-
Object.preventExtensions(obj);
设置对象为不能扩展,即不能添加新属性.
-
Object.isExtensible(obj);
设置对象为可以扩展,即是上面的取反。
-
obj.hasOwnProperty(prop)
判断对象是否拥有该属性
let a = { age:11 }; a.hasOwnProperty('age') > true
-
Object.getOwnPropertyDescriptors
返回对象的所有的属性的描述
let a = {age:1} Object.getOwnPropertyDescriptors(a);
-
Object.getOwnPropertyDescriptor
获取对象指定的属性的描述
let a = {age:1} Object.getOwnPropertyDescriptor(a,'age');
-
Object.getPrototypeOf(a)
获取对象的原型
-
isPrototypeOf
获取后面的那个是不是在前面那个的原型链上
let a =function(){} let b = new a(); a.prototype.isPrototypeOf(b); > true
-
Object.setPrototypeOf(a,{age:11})
设置对象的proto,想当于,a.proto = {age:11}
-
Object.getPrototypeOf(a)
获取对象的proto
后面还会补充....