ホームページ  >  に質問  >  本文

JavaScript - これに関する質問

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

给我你的怀抱给我你的怀抱2663日前883

全員に返信(6)返信します

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 11:08:26

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

    返事
    0
  • 高洛峰

    高洛峰2017-07-05 11:08:26

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

    返事
    0
  • 滿天的星座

    滿天的星座2017-07-05 11:08:26

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

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

    リーリー

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

    返事
    0
  • 怪我咯

    怪我咯2017-07-05 11:08:26

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

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 11:08:26

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

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

    返事
    0
  • 阿神

    阿神2017-07-05 11:08:26

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

    返事
    0
  • キャンセル返事