首页 新闻 会员 周边 捐助

原型与闭包的结合?? 看不懂求代码解释

-2
[已解决问题] 解决于 2016-07-28 16:02

var func = (function(){
  var f = function(name){
  this.name = name;
  this.arr();
};
f.prototype={
  arr:function(){
  alert(this.name);
  }
};
f.init = function(name){
  new this(name);
};
return f;
})()
func.init('lihao');

胡辣辣的主页 胡辣辣 | 菜鸟二级 | 园豆:204
提问于:2016-07-25 15:02
< >
分享
最佳答案
3

@胡辣辣 :你好,首先这段代码是正确的,没有任何错误。

注释如下:

var func = (function() {  
var f = function(name) {  
this.name = name;  
this.arr();//匿名函数,新建对象是就会被调用
};
f.prototype = {  
arr: function() {   
alert(this.name);  //弹出lihao
}
};
f.init = function(name) {  
new this(name);//这里this指f,f是一个匿名函数,this指向本身,所以是构造函数写法
};
return f;
})()
func.init('lihao');//调用init,是可以调到的,因为这里返回了变量f,f有init方法

 

奖励园豆:5
shawn的博客 | 菜鸟二级 |园豆:243 | 2016-07-27 00:51
其他回答(2)
0

天啊噜,new this(name); 是什么鬼

讲道理 这个this应该指向f 跟写new f(name)是一样的。

但是这么写有点不讲道理。什么时候需要把this指向别人呢?

长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-07-25 15:04
0

这段代码确实问题很大,可能是我水平太差...

小精灵儿Pawn | 园豆:470 (菜鸟二级) | 2016-07-26 21:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册