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');
@胡辣辣 :你好,首先这段代码是正确的,没有任何错误。
注释如下:
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方法
天啊噜,new this(name); 是什么鬼
讲道理 这个this应该指向f 跟写new f(name)是一样的。
但是这么写有点不讲道理。什么时候需要把this指向别人呢?
这段代码确实问题很大,可能是我水平太差...