0

このようなメソッドを呼び出すことができます

Func.apply(null,[123]);

関数がthisポインターに依存している場合、例外をスローしますか?

4

1 に答える 1

0

Mozilla開発ネットワークから:

thisArg

thisの呼び出しに提供されるの値fun。これは、メソッドから見た実際の値ではない可能性があることに注意してください。メソッドが非厳密モードコードの関数でnullありundefined、グローバルオブジェクトに置き換えられ、プリミティブ値がボックス化される場合。

つまり、関数がstrictモードを使用しない限り、のwindow代わりにthenが使用されますnull。strictモードを使用する場合は、thisになりますnull

それが例外を引き起こすかどうかは、適用されている関数に完全に依存します。関数がを使用しない場合はthis、値を渡すのは完全に安全です。thisnullではない可能性のあるプレーンオブジェクトとして扱う場合、厳密モードでのみ失敗する可能性があります。設定されているプロパティに依存している場合はTypeError、厳密モードと非厳密モードで同様にスローされる可能性があります。非厳密モードでのみ失敗する関数を作成するのも非常に簡単です(たとえば、明示的なチェックを追加することによって)

(少なくともいくつかの)組み込み配列関数は明示的なチェックを使用します。たとえばArray.prototype.split(undefined, [1,2,3])、ChromeではTypeError: Cannot call method 'apply' of undefined

于 2013-02-20T18:03:03.620 に答える