1

我有这个(非常简单的)代码:

Array.prototype.test = function(x) { alert(x) }
[0].test('Hello, World!')

但是,当我执行它时,我得到了这个:

TypeError: Cannot call method 'test' of undefined

怎么了?

4

1 回答 1

5

我遇到了这个奇怪的错误,我终于想通了解决办法是添加分号:

Array.prototype.test = function(x) { alert(x) };
[0].test('Hello, World!');

否则,它将被解析为:

Array.prototype.test = function(x) { alert(x) }[0].test('Hello, World!')

function(x) { alert(x) }[0]是未定义的,因为函数对象没有名为 的属性0,所以它变成

Array.prototype.test = undefined.test('Hello, World!')

然后,它尝试调用teston undefined,它当然不能这样做,所以它给出了一个错误。

于 2013-07-09T18:11:41.370 回答