在JavaScript中,如果我创建一个构造函数 Foo ,那么就是原型 对象也将创建为 Foo.prototype 。所以我尝试了这个:
function Foo() { this.xx = 1000}
我认为创建的原型对象 Foo.prototype 将具有 财产 xx = 1000 。所以我尝试了这个:
console.log(Foo.prototype.xx);
但结果是“未定义”。这是为什么?
不应该有一个具有单一属性xx的Foo.prototype对象 是1000?
感谢。
答案 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)