foo2那个调用的是局部变量啊,后面那个你要搞清楚调用callback函数的是谁,是window吧,骚年
解决方案 »
- 求牛人翻译prototype写的代码成jquery或javascript
- 同一页面内不同按钮显示不同数据
- 散分300! 希望带来好运!!
- ●已解决的层遮住控件的解决代码,但想以参数形式,请指点?
- 关于iframe的内存释放问题。
- 用JAVASCRIPT如何把在B页面中的记录赋值到A页面中的TEXTFIELD中?
- 用iframe,访造子窗口,怎样实现窗口拉大拉小
- 急,大哥门帮忙,看一下,谢谢!
- 我做的图片(javascript)飘动为什么会在移到有flash的地方,就看不见,等移出这个flash又从底下出来了?
- 菜鸟求助。找到了一段显示层的代码。却改不好。。那位老兄帮我看看该如何写。让层显示在汉字的前部分?
- ext中get getDom getCmp 的区别
- cookie方法应该普通jquery都支持吧?为什我这个没反应?
var oo = f;
var x = 'foo';
return oo;
};
f在x前面。
fff.method2(ff.say) 这样看就清楚。
var $a = ff.say;
var $x = $a('method');
第2个问题就是如LS说的那样!!我刚开始弄混了。callback = ff.say;
callback(),ff.say().其实callback就是一个匿名函数~匿名函数调用的this当然指向window~。
方法里的this要是不想指向window就得用function.call(_this)来调用
foo返回的函数即变量bar是在全局中定义的 是个全局函数: bar在弹出x时 先在自身函数内找,结果找不到然后接着就往全局找,结果在全局找到x即字符串“global”。
foo2返回的函数即bar2是在foo2内定义的,是局部函数:bar2在弹出x时 同样先在函数本身内找,没有找到后再在foo2内找,如果在foo2内找不到的话会继续向上在全局里找,但是在foo2中找到了x(‘foo2’),所以立即弹出不再向上查找。(2)先说“fff.method2(function(greet){return this.name + ' and ' + greet;})])”:
这个函数(红色部分)和上面的bar一样是在全局定义的,是个全局函数,只要是全局函数,那么函数中的this就会指向window。再说“fff.method2(ff.say)”:
函数中的this指向取决于它是如何被调用的,一定要注意“调用”这两个字。
“ff.say()”这叫做调用,此时say函数作为ff的方法调用,this当然是指向ff,也就会弹出“ff”。
但是在“fff.method2(ff.say)”中不是ff.say()而是“ff.say”。
ff.say是调用吗?不是!它只是一个函数,而且它最终传入fff.method中以callback的身份被调用(callback('method')),而不是像“ff.say()”一样作为ff的方法被调用,对于对象方法而言如果作为对象方法调用那么它的this就会指向window(同上,因为它是在全局定义的),所以最终ff.say这个函数再最终调用时this指向了window。楼主可以google一下作用域的相关知识~~~ps:码字也挺辛苦的~~顿时觉得这分儿少了点~~~