最新的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对象的原型。