📜  JavaScript 中的 Object.create()(1)

📅  最后修改于: 2023-12-03 14:42:30.118000             🧑  作者: Mango

JavaScript 中的 Object.create()

在JavaScript中,我们可以使用Object.create()方法来创建新的对象。该方法创建新对象时可以继承已有对象的属性和方法,也可以通过参数设置新对象的属性和方法。

创建一个简单的新对象
const myObj = Object.create(null);

上述代码创建了一个简单的新对象,该对象没有继承任何属性或方法。我们可以像创建对象字面量一样,使用点号或方括号来设置和访问新对象的属性:

myObj.name = 'John';
myObj['age'] = 30;
console.log(myObj.name);  // 输出 'John'
console.log(myObj['age']);  // 输出 30
从已存在的对象继承属性和方法
const parentObj = {
  name: 'Tom',
  age: 25,
  sayHi() {
    console.log(`Hi, my name is ${this.name}.`);
  }
};

const childObj = Object.create(parentObj);

上述代码中,我们使用Object.create()方法创建了一个新对象childObj,该对象继承了parentObj的所有属性和方法。我们可以通过调用childObj的属性和方法来验证其继承性:

console.log(childObj.name);  // 输出 'Tom'
childObj.sayHi();  // 输出 'Hi, my name is Tom.'
使用参数设置新对象的属性和方法
const newObj = Object.create(null, {
  name: {
    value: 'Amy',
    writable: true,
    configurable: true
  },
  age: {
    value: 28,
    writable: false,
    configurable: false
  },
  sayHi: {
    value: function() {
      console.log(`Hi, my name is ${this.name}.`);
    },
    writable: true,
    configurable: true
  }
});

上述代码中,我们使用Object.create()方法创建了一个新对象newObj,并通过第二个参数设置了新对象的属性和方法。每个属性和方法都是一个对象字面量,包含value、writable和configurable属性。

  • value:属性或方法的值。
  • writable:属性或方法是否可写。默认为false。
  • configurable:属性或方法是否可配置(删除或修改)。默认为false。

我们可以验证新对象的属性和方法,与前面的示例代码一样:

console.log(newObj.name);  // 输出 'Amy'
newObj.sayHi();  // 输出 'Hi, my name is Amy.'