Object 属性

Object.assign()  IE不支持

将所有可枚举属性的值从一个或多个源对象复制到目标对象

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

const object2 = Object.assign({c: 4, d: 5}, object1);

console.log(object2.c, object2.d);
// expected output: 3 5

Object.create()

创建一个新对象,使用现有的对象来提供新创建的对象的__proto__

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"; // "name"是"me"的属性, "person"没有这个属性
me.isHuman = true; // 继承属性可以被重写

Object.defineProperty()  IE9+

添加或修改对象上的属性

const object1 = {};

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;
// throws an error in strict mode

console.log(object1.property1);
// expected output: 42

Object.defineProperties()  IE9+

同时添加多个属性

Object.hasOwnProperty()

返回布尔值,说明对象中是否含有这个属性

o = new Object();
o.hasOwnProperty('prop');   // returns false
o.prop = 'exists';  
o.hasOwnProperty('prop');   // returns true