构造函数
通常情况下需要对象拥有相同或者相似的状态结构(也就是相同的属性集合),赋以不同的状态值。在这个情况下我们可能需要使用构造函数(constructor function),其以指定的模式来创造对象。
除了以指定模式创建对象之外,构造函数也做了另一个有用的事情-它自动地为新创建的对象设置一个原型对象。这个原型对象存储在ConstructorFunction.prototype
属性中。
换句话说,我们可以使用构造函数来重写上一个拥有对象b和对象c的例子。因此,对象a(一个原型对象)的角色由Foo.prototype来扮演:
//构造函数Foo(注意不是foo)
function Foo(y) {
this.y = y;
//自动创建了一个prototype属性,值为Foo.prototype
//自带__proto__属性,值为Function.prototype(自带__proto__属性,值为Object.prototype<...>)
}
// 定义Foo.prototype内有个x属性,值为10
Foo.prototype.x = 10;
// 定义Foo.prototype内有个calculate方法
Foo.prototype.calculate = function (z) {
return this.x + this.y + z;
};
// 基于Foo创建b,c
var b = new Foo(20);
var c = new Foo(30);
// 调用继承来的calculate方法
b.calculate(30); // 60
c.calculate(40); // 80
console.log(
b.__proto__ === Foo.prototype, // true
c.__proto__ === Foo.prototype, // true
b.constructor === Foo, // true
c.constructor === Foo, // true
Foo.prototype.constructor === Foo // true
b.calculate === b.__proto__.calculate, // true
b.__proto__.calculate === Foo.prototype.calculate // true
);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。