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");
亲自试一下 »
我们还了解到,您 **不能** 向现有的对象构造函数添加新的属性。
要向构造函数添加新的属性,您必须将其添加到构造函数中。
示例
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
。
向对象添加属性和方法
有时您希望向给定类型的所有现有对象添加新的属性(或方法)。
有时您希望向对象构造函数添加新的属性(或方法)。
使用 **prototype** 属性
JavaScript prototype
属性允许您向对象构造函数添加新的属性。
示例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
亲自试一下 »
JavaScript 的 prototype
属性也允许你为对象构造函数添加新方法。
示例
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 对象的原型。