cdsfiui 发表于 2016-07-14 10:52

js函数体有多个实例,会占用更多内存,这样设计的意义是什么?

例如,例子上说,下面这样的代码:
var Person=function(name){
    this.name=name;
    this.sayHello=function(){return 'Hello '+name;}
}
Person的每个实例当中,都会有一个sayHello的函数实例。如果有多个实例的话,相当于有多个sayHello存在于内存当中。那么要写成下面这样的才是一个单实例的函数
var Person=(function(){
    var sayHello=function(){return 'Hello '+name}
    return function(name){
      this.name=name
      this.sayHello=sayHello
    }
})()
sayHello就不会有多份。

我的问题是:
1. 第一种声明函数的方式,除了耗费更多的内存以外,到底有什么好处呢?
2. 是不是都应该写成第二种模式,或者实现层面应该避免每个具名函数都一个实例一份拷贝?

谢谢。
页: [1]
查看完整版本: js函数体有多个实例,会占用更多内存,这样设计的意义是什么?