JavaScript - これに関する質問
给我你的怀抱
给我你的怀抱 2017-07-05 11:06:26
0
6
911

図に示されているように、皆さんに聞きたいのですが、なぜ foo.call() ウィンドウの最初のパラメータは何なのでしょうか?

给我你的怀抱
给我你的怀抱

全員に返信(6)
女神的闺蜜爱上我

実際、問題の鍵は、call/apply 関数の役割を理解していないことです。正式にはスコープコンテキストを変更するということですが、ここではローカルコンテキストをウィンドウに変更しています。実際、call/apply は「借りたナイフで人を殺す」メソッドです。つまり、特定の属性またはメソッドを持っていない場合に、他のオブジェクトの属性またはメソッドを呼び出したい場合は、オブジェクト継承の実装方法でもあります。

いいねを押す +0
小葫芦

実際、Windows である必要はなく、f で var that=this を宣言し、クロージャー関数の this を that として記述するだけで済みます。これは、クロージャー関数が直接できないためです。上の関数の環境変数を取得するのはwindousだけなので、分からなかったら聞いてください

いいねを押す +0
滿天的星座

フロントエンドの場合、関数には目に見えないパラメータ this があり、デフォルトでグローバル変数ウィンドウを指します。
foo.call (他のオブジェクト) など、this が指すオブジェクトを変更しない限り
元の文ではデフォルトの this パラメーターが使用されています
注釈には、this が wi​​ndow を指していることが明確に示されています

もう少し文章を書きますが、そうでない場合は明確にします

リーリー

さらに、 this のセマンティクスは、この関数を呼び出すオブジェクトを指すことです。
各関数には呼び出すオブジェクトが必要です
obj.f() は f が obj によって呼び出されることを意味します
フロントエンドで呼び出しオブジェクトが指定されていない場合、デフォルトは関数を呼び出すためのグローバル変数ウィンドウです

いいねを押す +0
刘奇

JavaScript が設計されるとき、内部関数の this (つまり、関数本体の関数) はグローバル オブジェクト (つまり、ウィンドウ) にバインドされます。foo.call(window) ここでのコメントは、なぜ this.x なのかを説明するために js 言語を使用する必要があると思います。 foo() は 10 を出力します。

いいねを押す +0
曾经蜡笔没有小新

foo.call の最初のパラメータが window でなければならないとは言っていません。質問の主な点は、call が何であるかを理解することです。

https://developer.mozilla.org...

いいねを押す +0
阿神

call、apply、bindの機能と違いが理解できます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート