JavaScript 對象原型
所有 JavaScript 對象都從原型繼承屬性和方法。
在前一章里,我們學到了如何使用對象構造器:
實例
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "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.prototype。數組對象繼承自 Array.prototype。Person 對象繼承自 Person.prototype。
Object.prototype 位于原型繼承鏈的頂端:
日期對象、數組對象和 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 對象的原型。