日期:2014-05-16  浏览次数:20379 次

嘿嘿,今天好困呢,给大家出个小题缓解下疲劳。。
<script   type= "text/javascript ">
//忽忽,有人回复了答案先不要看啊,研究下这个东西,挺有意思的说。。
var   foo   =   {

'bar ':   function   ()   {
alert(this);
},

'toString ':   function   ()   {
return   'foo ';
}

};

window.toString   =   function   ()   {
alert( "引用全局this   ---   window ");
}

/*
哈哈测试方式这样的。。
第一次测试
注:书写格式要照我这个来啊。。不要改变。。
foo.bar();
(foo.bar)();
第二次测试
(foo.bar)();

然后说明道理^o^,哈哈答案相当之有意思。。我看了好半天才缓过来是什么意思^o^,
*/
</script>

------解决方案--------------------
第二次报错。弹了一个alert后,说“缺少对象”。
没见过这种写法,看不明白,查js参考中……@_@
期待最后公布答案。
有啥提示没?
------解决方案--------------------
toString
呵呵
有点意思
------解决方案--------------------
呵呵,我的理解 就是foo.bar属性和foo.bar()方法上
属性那个会返回函数,也就是constructor为function的对象
下面执行的时候,也就是this是指哪个对象,所以会有不同的结果
------解决方案--------------------
看着就晕. 比较BT的测试.
------解决方案--------------------
够变态!!
------解决方案--------------------
(function (b) {
return b;
})(b)();

不加括号也一样
function (b) {
return b;
}(b)();