Object常用方法

1)Object.assign(obj1,obj2,obj3....)     (可用于合并对象和深复制,合并对象时,如果有属性相同,后者会把去前者属性值覆盖,返回一个新对象)

const obj1={
  a:1,
  b:2,
  c:3
}

const obj2=Object.assign({},obj1)      //复制一个对象
const obj3=Object.assign(obj1,{c:4})  //合并对象

console.log(obj1,obj2,obj3)

3)Object.hasOwnProperty(str)   (返回布尔值)

const obj={a:1}
obj.hasOwnproperty('a')  //true

2) Object.key(obj)       (返回该对象可枚举(enumerable为false)的属性的一个数组,正常开发直接用即可)

const obj1={a:1,b:2,c:3}
const objkeyArr=Object.key(obj1);
console.log(objKeyArr)

3) Object.create(prototype,descriptors)     (第一个参数是要继承对的原型可以为null,第二个参数是属性描述符,这个参数是可选的,可用于继承)

const person = {
  isHuman: false,
  printIntroduction: function () {
    console.log(`My name is ${this.name}. Am I human?     ${this.isHuman}`);
  }
};

const me = Object.create(person);

me.name = "Matthew"; 
me.isHuman = true;

me.printIntroduction();   //"My name is Matthew. Am I human? true"

第二个参数的数据属性

  • value:属性的值
  • writable:如果为false,属性的值就不能被重写。
  • get: 一旦目标属性被访问就会调回此方法,并将此方法的运算结果返回用户。
  • set:一旦目标属性被赋值,就会调回此方法。
  • configurable:如果为false,则任何尝试删除目标属性或修改属性以下特性(writable, configurable, enumerable)的行为将被无效化。
  • enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。

4)Object.defineProperty(obj, props, descriptor)   及  Object.defineProperties(obj, props)

Object.defineProperty({}, 'name', {
    configurable: false,
    writable: true,
    enumerable: true,
    value: '张三',
    get:function(){
       return value
    },
    set:function(newValue){
       //do something
    }
})
Object.defineProperties({}, {
    name: {
        value: '张三',
        configurable: false,
        writable: true,
        enumerable: true
    },
    age: {
        value: 18,
        configurable: true
    }
})

扩展:应该可以用于监听数据的改变而利用回调进行一些更新

 

posted @ 2018-03-15 11:49  LLC-Mite  阅读(142)  评论(0编辑  收藏  举报