在面向对象的Javascript中,我们可以将对象内部的方法定义为
this.myMethod = function() {
}
OR
我们可以使用原型方式
MyClass.prototype.myMethod = function() {
}
这两种技术有什么区别?
答案 0 :(得分:1)
首先:
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是他们的父母。因此,在原型上声明方法可以提高内存效率。
来源: http://tobyho.com/2010/11/22/javascript-constructors-and/