每個JavaScript對象都有一個原型。 原型也是一個目的。
所有的JavaScript對象繼承它們的屬性和方法,從他們的原型。
JavaScript的原型
所有的JavaScript對象繼承其原型的屬性和方法。
對象使用對象文本創建,或用new Object()從一個名為Object.prototype中的原型繼承。
與創建的對象new Date()繼承Date.prototype。
在Object.prototype中是原型鏈的頂端。
所有的JavaScript對象(Date, Array, RegExp, Function, ....)從繼承Object.prototype 。
創建一個原型
創建一個對象原型的標準方法是使用一個對象的構造函數:
例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
隨著一個構造函數,您可以使用new關鍵字來創建相同的原型新的對象:
例
var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
試一試» 構造函數是原型Person對象。
它被認為是很好的做法,名字構造函數與大寫首字母。
添加的屬性和方法的對象
有時你想新的屬性(或方法)添加到現有的對象。
有時你想新的屬性(或方法)添加到特定類型的所有現有對象。
有時你想新的屬性(或方法)添加到對象的原型。
添加一個屬性到對象
添加一個新的屬性,以現有對象很簡單:
該屬性將被添加到myFather 。 不myMother 。 沒有任何其他人的對象。
添加一個方法到對象
添加一個新的方法,以現有的對象也很容易:
該方法將被添加到myFather 。 不myMother 。
添加屬性為原型
當您添加一個新的屬性,以現有的對象,因為原型是不是現有對象,你可以不是一個新的屬性添加到原型相同的方式。
要將新屬性添加到構造函數,則必須將其添加到構造函數:
例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English"
}
試一試» 原型屬性可以有原型的值(默認值)。
添加方法的原型
您的構造函數也可以定義方法:
例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {return this.firstName + " " + this.lastName;};
}
試一試» 使用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的原型屬性還可以讓你的新方法添加到現有的原型:
例
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對象的原型。