this方法有什么用呢?这种方法必须要有具体的绑定对象才能调用的呀,但是由于是匿名函数自执行,还有绑定对象么?写this属性还有意义么?
[code="java"]ClassID=(function(){
var id =0 ; //私有的那个值 静态私有属性
this.get1=function(){
return id;
};
return function (){ //外层函数返回一个有权访问私有值的嵌套的函数,就是我们保存在ClassID中的嵌套函数
this.getId=function(){
get1();
}
};
})();
ClassID.get3=function(){
return get1();
}
alert(ClassID.get3());//0
[/code]
但是这段书上代码竟然可用 我实在是不理解了 求解
[quote]this方法有什么用呢?这种方法必须要有具体的绑定对象才能调用的呀,但是由于是匿名函数自执行,还有绑定对象么?写this属性还有意义么?[/quote]
楼主说的是对的,就这段代码来说,里面的this完全没用。
这段代码能正常运行,完全因为里面的this其实就是window对象。在楼主给出的代码里,把this去掉(或者把this改成window),效果相同。(因为默认的作用域对象还是window)
所以说,楼主的结论:自执行的匿名函数,写this没有意义。是正确的。
总之,这是一段非常混乱的代码:
那个return的function完全是废物代码,没用。
[code="javascript"]ClassID=(function(){
var id =0 ; //这个id的确只局限于匿名函数内有效
this.get1=function(){//这儿的this就是window
return id; //因为get1函数被赋值在window上,所以形成了一个闭包,从而在离开了匿名函数的执行范围以后id变量仍然存活,可以通过闭包来访问
};
return function (){}; //这儿只是个普通对象而已,下面没执行这个函数
})();
ClassID.get3=function(){ //ClassID是个函数,函数也是个对象,对象也可以赋值,在ClassID对象上增加一个函数get3
return get1(); //这儿访问的是window.get1()
}
alert(ClassID.get3());//0 [/code]
[url]http://www.cnblogs.com/felix2007/archive/2007/03/21/682670.html[/url]
1、在javascript中函数本身也是对象
2、参考(function(){})() 语法
2.1、(function(){}) -->拿到匿名函数对象 所以是个对象 因此里边可以用this 代表当前对象 不信你可以在this.get1调用下alert(this)
2.2、(function(){})() 执行那个函数 又返回了内部的匿名函数
[url]http://hi.baidu.com/infol/item/edaef3d2b91eddfdca0c392b[/url]
3、闭包的概念
在return的内部函数中调用外部函数的局部变量(此处内部函数调用getl getl调用了id局部变量)
[url]http://kb.cnblogs.com/page/110782/[/url]
JS中的this一句话,就是谁Call这个方法,this就是谁。所以line3中的this就是Window对象,line7中的this要看谁call这个返回的函数。