JS-- this
阿新 • • 發佈:2018-12-17
this簡介
this是JS中很重要的一個關鍵字,它總是指向一個物件,
而這個物件是在執行時基於函式的執行環境動態繫結的。
this指向分類
作為普通函式呼叫
作為建構函式呼叫
作為物件的方法呼叫
call和apply呼叫
作為普通函式呼叫
當函式以普通函式的方式呼叫時,函式內的this在非嚴格模式下指向window,在嚴格模式下指向undefined
var name = “global”; var person = { name: "tom", sayName: function() { console.log(this.name); } } var printName = person.sayName; printName(); //global
如上程式碼是以普通函式的方式呼叫函式
作為建構函式呼叫
當函式通過new呼叫時,即以建構函式的方式呼叫,函式會返回一個物件,函式內部的this指向這個返回的物件
function Person (name) { this.name = name;
console.log(this); }
var person = new Persosn("tom"); //{name: "tom"}
作為物件的方法呼叫
當函式作為某個物件的屬性時,函式內部的this指向這個物件
var person = {
name: "tom",
sayName: function () {
console.log(this.name);
}
}
persosn.sayName(); //"tom"
call和apply呼叫
通過call,apply的方式呼叫函式,可以動態的改變傳入函式中的this指向
var sayName = function () {
console.log(this.name);
}
var person1 = {
name: "tom"
}
var person2 = {
name; "lily"
}
sayName.call(person1); //"tome"
sayName.call(person2); //"lily"