在原型(prototype)上单独定义方法与通过对象定义方法有什么区别?
示例:
function Example() {
this.Test();
}
Example.prototype.Test = function() {
alert("Example");
};
而不是:
function Example() {
this.Test();
}
Example.prototype = {
Test: function() {
alert("Example");
}
};
最佳答案
这是添加原型(prototype)和替换原型(prototype)之间的区别。
唯一真正可能产生影响的地方是在这种情况下,这种情况相对罕见(但我因此避免更换原型(prototype)):
var f = new Foo();
function Foo() {
}
Foo.prototype = {
test: function() { }
};
f.test(); // Fails!
失败是因为 f
对象是使用 Foo
的原始原型(prototype)对象创建的,但是后来您用一个新的原型(prototype)对象替换该原型(prototype)对象。 f
仍然使用旧的,它没有 test
属性。
这有效:
var f = new Foo();
function Foo() {
}
Foo.prototype.test = test: function() { };
f.test(); // Works
...因为您只是添加到 f
已用作其原型(prototype)的对象。 Live Copy | Live Source
假设 f
在您用新对象替换 Foo.prototype
之前之后才创建,它确实不会使任何显着差异。
关于javascript - 在原型(prototype)上定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136905/