返回

js手写代码小记:从Object.create和Object.create谈起

前端

JavaScript中的对象创建

在JavaScript中,对象是用来存储和组织数据的。我们可以使用多种方法来创建对象,最常见的方法之一就是使用Object.create()方法。

Object.create()方法接受两个参数:

  • 第一个参数是新对象的原型对象。
  • 第二个参数是新对象的属性和方法。

以下是一个使用Object.create()方法创建对象的示例:

const person = {
  name: "John Doe",
  age: 30,
};

const employee = Object.create(person, {
  salary: {
    value: 100000,
  },
});

在这个示例中,我们首先创建了一个名为person的对象,它包含了两个属性:name和age。然后,我们使用Object.create()方法创建了一个名为employee的新对象,它继承了person对象的属性和方法。我们还向employee对象添加了一个名为salary的新属性。

JavaScript中的原型继承

在JavaScript中,对象可以通过原型继承的方式来继承其他对象。原型继承是一种特殊的继承方式,它允许一个对象继承另一个对象的属性和方法。

每个对象都有一个原型对象,原型对象是该对象的父对象。我们可以使用Object.getPrototypeOf()方法来获取一个对象的原型对象。

以下是一个使用Object.getPrototypeOf()方法获取对象原型对象的示例:

const person = {
  name: "John Doe",
  age: 30,
};

const employee = Object.create(person, {
  salary: {
    value: 100000,
  },
});

console.log(Object.getPrototypeOf(employee)); // { name: "John Doe", age: 30 }

在这个示例中,我们首先创建了一个名为person的对象,它包含了两个属性:name和age。然后,我们使用Object.create()方法创建了一个名为employee的新对象,它继承了person对象的属性和方法。我们还向employee对象添加了一个名为salary的新属性。

使用Object.getPrototypeOf()方法,我们可以获取employee对象的原型对象,它是person对象。这表明employee对象继承了person对象的属性和方法。

Object.create()和Object.create

Object.create()方法和Object.create方法都是用来创建对象的,但它们之间有一些区别。

Object.create()方法创建一个新对象,它继承了另一个对象的属性和方法。Object.create方法创建一个新对象,它没有原型对象。

以下是一个使用Object.create方法创建对象的示例:

const person = {
  name: "John Doe",
  age: 30,
};

const employee = Object.assign({}, person, {
  salary: 100000,
});

console.log(Object.getPrototypeOf(employee)); // null

在这个示例中,我们首先创建了一个名为person的对象,它包含了两个属性:name和age。然后,我们使用Object.assign()方法创建了一个名为employee的新对象,它继承了person对象的属性和方法。我们还向employee对象添加了一个名为salary的新属性。

使用Object.getPrototypeOf()方法,我们可以获取employee对象的原型对象,它是null。这表明employee对象没有原型对象。

总结

在JavaScript中,我们可以使用Object.create()方法和Object.create方法来创建对象。Object.create()方法创建一个新对象,它继承了另一个对象的属性和方法。Object.create方法创建一个新对象,它没有原型对象。

原型继承是JavaScript中一种特殊的继承方式,它允许一个对象继承另一个对象的属性和方法。每个对象都有一个原型对象,原型对象是该对象的父对象。我们可以使用Object.getPrototypeOf()方法来获取一个对象的原型对象。