我有这个(非常简单的)代码:
Array.prototype.test = function(x) { alert(x) }
[0].test('Hello, World!')
然而,当我执行它时,我明白了:
TypeError: Cannot call method 'test' of undefined
有什么问题?
答案 0 :(得分: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!')
然后,它会尝试在test
上调用undefined
,这当然不能做,所以它会出错。