在原型上单独定义方法与通过对象定义方法有什么区别?
示例:
function Example() {
this.Test();
}
Example.prototype.Test = function() {
alert("Example");
};
而不是:
function Example() {
this.Test();
}
Example.prototype = {
Test: function() {
alert("Example");
}
};
答案 0 :(得分:1)
添加原型和替换之间的区别。
唯一真正有可能产生影响的地方就是这种情况,这种情况相对较少(但是,我避免因为它而更换原型):
var f = new Foo();
function Foo() {
}
Foo.prototype = {
test: function() { }
};
f.test(); // Fails!
失败是因为f
对象是使用Foo
的原始原型对象创建的,但随后 您将原型对象替换为一个新的。 f
仍然使用旧版本,其中没有test
属性。
这有效:
var f = new Foo();
function Foo() {
}
Foo.prototype.test = test: function() { };
f.test(); // Works
...因为你只是添加f
已经用作原型的对象。 Live Copy | Live Source
如果在之后您已用新对象替换f
,则不会创建Foo.prototype
,它实际上没有任何显着差异。