Simple Array.prototype给出了一个TypeError

时间:2013-07-09 18:11:41

标签: javascript arrays prototype typeerror

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

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

然而,当我执行它时,我明白了:

TypeError: Cannot call method 'test' of undefined

有什么问题?

1 个答案:

答案 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,这当然不能做,所以它会出错。