我有这个(非常简单的)代码:
Array.prototype.test = function(x) { alert(x) }
[0].test('Hello, World!')
但是,当我执行它时,我得到了这个:
TypeError: Cannot call method 'test' of undefined
怎么了?
我有这个(非常简单的)代码:
Array.prototype.test = function(x) { alert(x) }
[0].test('Hello, World!')
但是,当我执行它时,我得到了这个:
TypeError: Cannot call method 'test' of undefined
怎么了?
我遇到了这个奇怪的错误,我终于想通了解决办法是添加分号:
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!')
然后,它尝试调用test
on undefined
,它当然不能这样做,所以它给出了一个错误。