由javascript中的构造函数创建的原型对象属性

时间:2015-01-25 20:44:38

标签: javascript prototype

在JavaScript中,如果我创建一个构造函数 Foo ,那么就是原型 对象也将创建为 Foo.prototype 。所以我尝试了这个:

function Foo() { this.xx = 1000}

我认为创建的原型对象 Foo.prototype 将具有 财产 xx = 1000 。所以我尝试了这个:

console.log(Foo.prototype.xx);

但结果是“未定义”。这是为什么?

不应该有一个具有单一属性xx的Foo.prototype对象 是1000?

感谢。

1 个答案:

答案 0 :(得分:0)

如果在构造函数中添加属性,则每个实例都有一个自己的副本:

function Foo1() {
    this.xx = [1000];
}
var foo1 = new Foo1(),
    foo2 = new Foo1();
foo1.hasOwnProperty('xx'); // true
foo2.hasOwnProperty('xx'); // true
foo1.xx == foo2.xx;        // false (each instance has a different copy)

您还可以使用原型继承。然后,在所有实例之间共享相同的继承属性:

function Foo2() {}
var foo1 = new Foo2(),
    foo2 = new Foo2();
'xx' in foo1; // false
'xx' in foo2; // false
Foo2.prototype.xx = [1000];
'xx' in foo1; // true
'xx' in foo2; // true
foo1.hasOwnProperty('xx'); // false (it's inherited)
foo2.hasOwnProperty('xx'); // false (it's inherited)
foo1.xx == foo2.xx;        // true (all instances share the same value)