Chinaunix

标题: js函数体有多个实例,会占用更多内存,这样设计的意义是什么? [打印本页]

作者: cdsfiui    时间: 2016-07-14 10:52
标题: js函数体有多个实例,会占用更多内存,这样设计的意义是什么?
例如,例子上说,下面这样的代码:

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

  1. var Person=(function(){
  2.     var sayHello=function(){return 'Hello '+name}
  3.     return function(name){
  4.         this.name=name
  5.         this.sayHello=sayHello
  6.     }
  7. })()
复制代码
sayHello就不会有多份。

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

谢谢。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2