この問題のjsのポイント

この時点では、常に唯一のオブジェクトであります!
これは、この書き込みに依存したことがないこの時点!しかし、呼び出す関数に。
これはオブジェクトを指し、我々はまた、関数の呼び出し元と呼ばれる、コンテキストcontext関数を呼び出します。

1:関数名による直接呼び出し:この時点窓

function func(){
    console.log(this);
}   


//① 通过函数名()直接调用:this指向window
func(); // this--->window

2:オブジェクト関数名()コールを介して:これは、このオブジェクトを指し

function func(){
    console.log(this);
}
//② 通过对象.函数名()调用的:this指向这个对象
// 狭义对象
var obj = {
    name:"obj",
    func1 :func
};
obj.func1(); // this--->obj

// 广义对象
document.getElementById("div").onclick = function(){
    this.style.backgroundColor = "red";
}; // this--->div

配列の要素の関数として、標準のコールを介して配列:この配列ポイントへ

function func(){
    console.log(this);
}
//③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
var arr = [func,1,2,3];
arr[0]();  // this--->arr

組み込み関数ウィンドウ関数コールバック関数呼び出しとしてこの点ウィンドウ(たsetIntervalのsetTimeout等)

function func(){
    console.log(this);
}

//④ 函数作为window内置函数的回调函数调用:this指向window
setTimeout(func,1000);// this--->window
//setInterval(func,1000);

新しいキーワードで呼び出されたときにコンストラクタとしての機能は、:これは新しい新しいオブジェクトを指し示します

function func(){
    console.log(this);
}
//⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象
var obj = new func(); //this--->new出的新obj

おすすめ

転載: www.cnblogs.com/amysu/p/10951043.html