- 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);同理
------解决方案--------------------