目录

JavaScript 对象原型


所有 JavaScript 对象都从原型继承属性和方法。


在上一章中我们学习了如何使用对象构造函数

示例

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}

const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
亲自试一试 »

我们还了解到您可以不是向现有对象构造函数添加新属性:

示例

Person.nationality = "English";
亲自试一试 »

要将新属性添加到构造函数,必须将其添加到构造函数:

示例

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "English";
}
亲自试一试 »


原型继承

所有 JavaScript 对象都从原型继承属性和方法:

  • Date对象继承自Date.prototype
  • Array对象继承自Array.prototype
  • Person对象继承自Person.prototype

这个Object.prototype位于原型继承链的顶端:

Date物体,Array对象,以及Person对象继承自Object.prototype


向对象添加属性和方法

有时您想要向给定类型的所有现有对象添加新属性(或方法)。

有时您想向对象构造函数添加新属性(或方法)。


使用原型属性

JavaScriptprototypeproperty 允许您向对象构造函数添加新属性:

示例

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}

Person.prototype.nationality = "English";
亲自试一试 »

JavaScriptprototype属性还允许您向对象构造函数添加新方法:

示例

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}

Person.prototype.name = function() {
  return this.firstName + " " + this.lastName;
};
亲自试一试 »

只修改你的自己的原型。切勿修改标准 JavaScript 对象的原型。