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!')

test次に、 onを呼び出そうとしますがundefined、もちろん実行できないため、エラーが発生します。

于 2013-07-09T18:11:41.370 に答える