JS大侠请入。一个古怪的有关问题
JS大侠请入。一个古怪的问题突然想到一段代码。如下:?function handler(){alert(this)}{}.test handler{}
JS大侠请入。一个古怪的问题
突然想到一段代码。如下:
?
function handler(){ alert(this)}{}.test = handler;{}.test()
?
按照我的思路,这个应该弹出object。
?
不过,结果很失望。在IE和FF下都报错。
?
和朋友们交流了一下,也没什么合理的解释,顾请各位路过的大侠们帮忙解答下。
?
大恩不言谢!!
=========================
恍然大悟,呵呵,对的。多谢了。
不过,还是有问题。按照这么理解,应该是弹出undefined。不过,结果是什么都没弹出,并且报告脚本错误。{}.test = handler; 这句话呢,{}被当成了代码块处理,所以,是语法错误。可以这样调整,
({}).test = handler;
{}.test = handler;
这句话呢,{}被当成了
代码块处理,所以,是
语法错误SyntaxError。可以这样调整,
({}).test = handler;
{}.test()
这句呢,无容置疑,肯定是错的。如果改变优先级呢,比如,想上一个一样,写成
({}).test()
这样,也是错误的,但是这次不是语法错误SyntaxError,而是
类型错误TypeError,你可以这样试试,去掉最后面对函数调用,如下:
({}).test
此时的输出是undefined,对undefinited进行函数调用,肯定是错误的。
如果你想用匿名对象的话,可以这样:
({test:function(){alert(this);}}).test();