常用API
-
Object.defineProperty()
直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。允许为属性添加定义getter和setter函数。屏蔽上层同名属性
let value;
Object.defineProperty(data,'age',{
get(){
return value
},
set(newVal){
value= newVal
}
})
-
Object.getOwnPropertyNames
遍历所有自身属性 包含不可枚举的let keyArr = Object.getOwnPropertyNames(obj) -
Object.assign()
扩展属性,返回目标对象,将B,C的属性给A,没有才加 (扩展属性),有覆盖
Object.assign(A, B || {}, C || {}) -
Object.keys()
不会遍历对象原型链上的属性以及 Symbol 属性
只遍历自身的可枚举属性, 返回数组
Object.keys(对象||数组) -
Object.create()
创建一个新对象,使用现有的对象来提供新创建的对象的__proto__,返回对象
//是通过 [[Prototype]] 委托互相关联 var Foo = { /* .. */ }; var Bar = Object.create( Foo );
* ### Object.getPrototypeOf(object)
参数:obj
返回值:其原型的对象,如果没有继承属性,则返回 null 。
const prototype1 = {}; const object1 = Object.create(prototype1); console.log(Object.getPrototypeOf(object1) === prototype1); // expected output: true
* ### prototypeObj.isPrototypeOf()
方法用于测试一个对象是否存在于另一个对象的原型链上。
```!
isPrototypeOf() 与 instanceof 运算符不同。在表达式 "object instanceof AFunction"中,object 的原型链是针对 AFunction.prototype 进行检查的,而不是针对 AFunction 本身。
为了确保某些方法或属性将位于对象上
if (Foo.prototype.isPrototypeOf(baz)) { // do something safe }
本文内容未经过校验,如有错误欢迎指出。