- 主题: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. 是不是都应该写成第二种模式,或者实现层面应该避免每个具名函数都一个实例一份拷贝?
谢谢。
--
FROM 222.126.214.*
这哪看的,写的明显有问题啊
sayHello里面name前要加"this."
【 在 sedelick (sedelick) 的大作中提到: 】
: 例如,例子上说,下面这样的代码:
: var Person=function(name){
: this.name=name;
: ...................
--
FROM 183.95.135.*
可以不加的。
【 在 ottffsse 的大作中提到: 】
: 这哪看的,写的明显有问题啊
: sayHello里面name前要加"this."
--
FROM 222.126.214.*
你不知道prototype么 。。
【 在 sedelick (sedelick) 的大作中提到: 】
: 例如,例子上说,下面这样的代码:
: var Person=function(name){
: this.name=name;
: ...................
--
FROM 111.202.109.46
var Person=function(name){
this.name=name;
this.sayHello=function(){return 'Hello '+name;}
};
var person=new Person('zhangsan');
person.sayHello(); //Hello zhangsan
person.name='lisi';
person.sayHello(); //????
【 在 ottffsse (nothing) 的大作中提到: 】
: 这哪看的,写的明显有问题啊
: sayHello里面name前要加"this."
--
FROM 183.95.135.*