在面向对象的 Javascript 中,我们可以在对象内部定义一个方法:
this.myMethod = function() {
}
或者
我们可以使用原型(prototype)方式
MyClass.prototype.myMethod = function() {
}
这两种技术有什么区别?
最佳答案
第一:
function Person(name){
this.name = name
this.sayHi = function(){
return 'Hi, I am ' + this.name
}
}
第二:
function Person(name){
this.name = name
}
Person.prototype.sayHi = function(){
return 'Hi, I am ' + this.name
}
在第一个版本中,每次创建一个人时,都会为他创建一个新的 sayHi 函数,而在第二个版本中,只创建一个 sayHi 函数,并在所有创建的人之间共享 -因为 Person.prototype 是他们的父级。因此,在原型(prototype)上声明方法可以提高内存效率。
来源: http://tobyho.com/2010/11/22/javascript-constructors-and/
关于使用此 V/s 原型(prototype)的 Javascript 定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216551/