図に示されているように、皆さんに聞きたいのですが、なぜ foo.call() ウィンドウの最初のパラメータは何なのでしょうか?
実際、問題の鍵は、call/apply 関数の役割を理解していないことです。正式にはスコープコンテキストを変更するということですが、ここではローカルコンテキストをウィンドウに変更しています。実際、call/apply は「借りたナイフで人を殺す」メソッドです。つまり、特定の属性またはメソッドを持っていない場合に、他のオブジェクトの属性またはメソッドを呼び出したい場合は、オブジェクト継承の実装方法でもあります。
実際、Windows である必要はなく、f で var that=this を宣言し、クロージャー関数の this を that として記述するだけで済みます。これは、クロージャー関数が直接できないためです。上の関数の環境変数を取得するのはwindousだけなので、分からなかったら聞いてください
フロントエンドの場合、関数には目に見えないパラメータ this があり、デフォルトでグローバル変数ウィンドウを指します。 foo.call (他のオブジェクト) など、this が指すオブジェクトを変更しない限り 元の文ではデフォルトの this パラメーターが使用されています 注釈には、this が window を指していることが明確に示されています
もう少し文章を書きますが、そうでない場合は明確にします
さらに、 this のセマンティクスは、この関数を呼び出すオブジェクトを指すことです。 各関数には呼び出すオブジェクトが必要ですobj.f() は f が obj によって呼び出されることを意味しますフロントエンドで呼び出しオブジェクトが指定されていない場合、デフォルトは関数を呼び出すためのグローバル変数ウィンドウです
JavaScript が設計されるとき、内部関数の this (つまり、関数本体の関数) はグローバル オブジェクト (つまり、ウィンドウ) にバインドされます。foo.call(window) ここでのコメントは、なぜ this.x なのかを説明するために js 言語を使用する必要があると思います。 foo() は 10 を出力します。
foo.call(window)
foo.call の最初のパラメータが window でなければならないとは言っていません。質問の主な点は、call が何であるかを理解することです。
https://developer.mozilla.org...
call、apply、bindの機能と違いが理解できます
実際、問題の鍵は、call/apply 関数の役割を理解していないことです。正式にはスコープコンテキストを変更するということですが、ここではローカルコンテキストをウィンドウに変更しています。実際、call/apply は「借りたナイフで人を殺す」メソッドです。つまり、特定の属性またはメソッドを持っていない場合に、他のオブジェクトの属性またはメソッドを呼び出したい場合は、オブジェクト継承の実装方法でもあります。
実際、Windows である必要はなく、f で var that=this を宣言し、クロージャー関数の this を that として記述するだけで済みます。これは、クロージャー関数が直接できないためです。上の関数の環境変数を取得するのはwindousだけなので、分からなかったら聞いてください
。フロントエンドの場合、関数には目に見えないパラメータ this があり、デフォルトでグローバル変数ウィンドウを指します。
foo.call (他のオブジェクト) など、this が指すオブジェクトを変更しない限り
元の文ではデフォルトの this パラメーターが使用されています
注釈には、this が window を指していることが明確に示されています
もう少し文章を書きますが、そうでない場合は明確にします
リーリーさらに、 this のセマンティクスは、この関数を呼び出すオブジェクトを指すことです。
各関数には呼び出すオブジェクトが必要です
obj.f() は f が obj によって呼び出されることを意味します
フロントエンドで呼び出しオブジェクトが指定されていない場合、デフォルトは関数を呼び出すためのグローバル変数ウィンドウです
JavaScript が設計されるとき、内部関数の this (つまり、関数本体の関数) はグローバル オブジェクト (つまり、ウィンドウ) にバインドされます。
foo.call(window)
ここでのコメントは、なぜ this.x なのかを説明するために js 言語を使用する必要があると思います。 foo() は 10 を出力します。foo.call の最初のパラメータが window でなければならないとは言っていません。質問の主な点は、call が何であるかを理解することです。
https://developer.mozilla.org...
call、apply、bindの機能と違いが理解できます