object--API及常用方法

183 阅读1分钟

常用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 }

本文内容未经过校验,如有错误欢迎指出。