-3

私と Smurfette は、ネイティブ関数を新しい smurfy 名前空間にマッピングしています。

SMURF

これを行うには、正しいコンテキストで with から関数を呼び出して、 this の正しい値も確認してマップします。これを行うには多くの方法がありますが、これは 1 つにすぎません。

例えば、

SMURF.getComputedStyle = function(){
  return win.getComputedStyle.apply(win, arguments);
};

しかし、オブジェクト指向スタイルの関数オブジェクトに対してこれを行うにはどうすればよいでしょうか? 特に、

SMURF.FormData = win.FormData;

これは同じ方法で行うことができますか?

呼び出しメカニズムが異なるため、お尋ねします。

new SMURF.FormData();

とは対照的に

SMURF.getComputedStyle();

ここに関連する質問があります。

暗黙の質問だと思いますがapply、関数コンストラクターで使用できますか?

説明:

Pre-IE9には関係ありません

4

1 に答える 1

2

window オブジェクトのメソッドとして実装されている非ジェネリック メソッドの場合は、次のように使用できます.bind

SMURF.setTimeout = setTimeout.bind(window);

メソッドがジェネリックまたはコンストラクターの場合は、次のことができます

SMURF.x = window.x

例えば

SMURF.FormData = FormData;

うまくいきます。

IE8 .call(したがって、すべての.bindshim) では、ホスト オブジェクトのコンテキストを適切に変更できないことに注意してください。

于 2013-07-27T22:43:03.777 に答える