首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

这样函数调用,该怎么解释

2012-05-14 
这样函数调用,该如何解释?JScript codevar foo {bar: function () {alert(this)}}1、foo.bar()//foo 2

这样函数调用,该如何解释?

JScript code
var foo = {  bar: function () {    alert(this);  }};   1、foo.bar();//foo 2、(foo.bar)();//foo 3、(foo.bar = foo.bar)(); // global 4、foo.bar = foo.bar; foo.bar();//foo 6、(false || foo.bar)(); // global



[解决办法]
我的理解是,js中小括号()有一个用法是(复杂表达式),这时的作用是取括号内的复杂表达式的最终结果为返回结果。也就是是(foo.bar = foo.bar)(3);等价于var func = (foo.bar = foo.bar); func(3); 此时this正好为window,(false || foo.bar)(5);同理
[解决办法]
探讨

我小小谈谈我的看法,表喷我啊,1,2,4都是调用的foo.bar方法,而3和6的括号里都是再判断真假,那么返回的应该不是foo对象吧,我觉得,所以3和6应该是一样的,括号里都返回的是true,而其他的都是foo的方法调用。不知道各位大侠,我说的对不对。

热点排行
Bad Request.