ホームページ  >  記事  >  ウェブフロントエンド  >  これに関する関連質問

これに関する関連質問

jacklove
jackloveオリジナル
2018-05-21 13:35:291164ブラウズ

勉強中にこの問題によく遭遇します。この記事では、それに関連する問題について説明します。

グローバル オブジェクト ウィンドウとしてのこれのいくつかのケース

これは関数呼び出しとしての

これは内部ネストされた関数としての

setTimeout と setInteval では、これは依然としてグローバル変数ウィンドウです

これは非グローバル変数です

Constructor (コンストラクターは関数を通じて新しいオブジェクトを生成します。この時点では、これは新しいオブジェクトを指します)

は次のようなオブジェクト メソッドとして呼び出されます:

var obj1 = {    name: 'Byron',    fn : function(){        console.log(this);
    }
};
obj1.fn(); // obj1var fn2 = obj1.fn;
fn2();  //此时this仍然指的是全局对象window

DOM オブジェクト バインディング イベント これはソース DOM を表しますobject (IE の下位バージョンにはバグがあり、window を指すこともあります)

オリジナルの関数をバインドするには、bind 関数を使用します。このとき、これは、bind に渡される最初のパラメータを参照します。例:

var obj1 = {    name: 'Byron',    fn : function(){        console.log(this);
    }
};
obj1.fn(); //obj1var fn2 = obj1.fn;
fn2();  //此时this仍然指的是全局对象windowvar fn3 = obj1.fn.bind(obj1);fn3();  //此时this指的为obj1(此方法比较灵活,可利用此方法将所要传送给this 的参数指定为bind的第一个对象)
apply和call设置this,如:
fn.call(context,num1,num2...);fn.apply(context,numArray)

最初のパラメータはこのオブジェクトです。違いは、call がパラメータ リストを受け入れるのに対し、apply はパラメータ配列を受け入れることです。

caller、関数 f がグローバル スコープで呼び出された場合、f.caller は null になります。逆に、関数が別の関数スコープで呼び出された場合、f.caller はそれを呼び出した関数を指します。呼び出し元が親関数を参照していることだけを理解しました。例:

function fn(){    console.log(fn.caller); 
    function fn2(){        console.log(fn2.caller)
    }
    fn2()
}
fn();
callee,当函数被调用的时候arguments.callee(匿名函数的时候很好用,可以调用自身)
var i = 1;window.onclick = function(){    console.log(1);    if(i<5){        i++;        setTimeout(arguments.callee,200);    }}

この記事では、これに関連する問題について説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。

関連する推奨事項:

JS 配列、文字列、数学関数

JS 時間オブジェクトと再帰の問題について

CSS スタイルの基本的な知識

以上がこれに関する関連質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。