最新的Web開發教程
 

JavaScript原型對象


每個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.nationality = "English";
試一試»

該屬性將被添加到myFather 。 不myMother 。 沒有任何其他人的對象。


添加一個方法到對象

添加一個新的方法,以現有的對象也很容易:

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};
試一試»

該方法將被添加到myFather 。 不myMother


添加屬性為原型

當您添加一個新的屬性,以現有的對象,因為原型是不是現有對象,你可以不是一個新的屬性添加到原型相同的方式。

Person.nationality = "English";
試一試»

要將新屬性添加到構造函數,則必須將其添加到構造函數:

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對象的原型。