JavaScript 对象原型
-
JavaScript对象原型
所有JavaScript对象都从原型继承属性和方法。在上一章中,我们学习了如何使用对象构造函数:
尝试一下function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } var myFather = new Person("John", "Doe", 50, "blue"); var 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。 -
向对象添加属性和方法
有时,您希望向给定类型的所有现有对象添加新属性(或方法)。有时您想要向对象构造函数添加新属性(或方法)。使用原型属性
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对象的原型。