可能重复:
JavaScript:Class.method与Class.prototype.method
我正在尝试理解JavaScript中的对象。现在我看到了物体的许多不同用途,我无法将它们区分开来。
对于初学者来说,我最想知道的是这两个之间的区别
Something.prototype.else = function(){
return 6;
}
和
Something.else = function(){
return 6;
}
两者看起来不同,但使用方式相同,或者我弄错了。
如果您熟悉其他编程语言,您可以将第二种语言视为静态方法。
第一个你需要一个对象的实例来使用它:
var x = new Something();
x.else();
第二个你不需要一个实例来使用它:
Something.else();
对于JavaScript工作的面试来说,这确实是一个很好的问题。
不同之处在于Something.else
覆盖Something.prototype.else
。也就是说,如果两者都有,则将使用Something.else
。
拥有原型的好处是,原型可以在许多对象之间共享,以减少内存使用,使monkey补丁更容易,并实现基于原型的继承。