可能重复:
JavaScript: Setting methods through prototype object or in constructor, difference?
我想这是一个关于浏览器实现闭包的问题。我知道在JavaScript中模拟类类功能的众多方法,包括使用各种库。这是一个关于资源的问题。
以这种方式创建函数每次调用时都会创建public_function
函数的新副本吗?基本问题是:这样做是否比将函数添加到MyObject.prototype
使用更多RAM?
function MyObject(){
this.public_function = function(){
//... do something
}
}
答案 0 :(得分:2)
是
如果不出意外,这需要new MyObject()
创建的每个对象上的插槽,而不是原型上的单个插槽。
但是当然,是其他东西:匿名函数创建一个闭包,捕获定义它的范围。同样,必须将存储为MyObject创建的每个对象。
这实际上是否重要取决于你创建的对象数量......
答案 1 :(得分:0)
对于具有多个实例的类,构造函数中定义的匿名函数将为每个实例创建一个新的函数副本。
不使用原型的另一种方法是定义静态函数并将其分配给成员。例如:
function A(){
this.hello = Hello;
}
function Hello(){
alert('hello');
}