7

backbone.js ソース コードは、次のような関数ラッパーを使用します。

(function(){
    ...
}).call(this);

http://backbonejs.org/docs/backbone.html#section-185に見られるように。

多くの場合、代わりに次のものが使用されているのを見てきました。

(function(){
    ...
})();

これら2つの動作が異なるのはいつですか? .call(this)私はそれらが同等であるという印象を受けましたが、バックボーンが短い代替手段の代わりに使用することを考えると、違いがあるに違いないと思います.

4

2 に答える 2

8

最初の例でthisは、関数の内部はthis呼び出しスコープからのものになります。

2 番目の例では、thisになりますwindow

(Šime Vidas が指摘したようにundefined、厳密モードではなく、window.)

于 2012-07-20T22:59:13.247 に答える
4

1 つ目thisは、呼び出されたときのスコープ内と関数内で同じです。2 つ目は、ウィンドウ オブジェクトを参照します。

于 2012-07-20T22:59:22.957 に答える