JavaScript this 關鍵詞
- JS 嚴格模式
- JS Let
實例
<code>var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
/<code>
this 是什麼?
JavaScript this 關鍵詞指的是它所屬的對象。
它擁有不同的值,具體取決於它的使用位置:
- 在方法中,this 指的是所有者對象。
- 單獨的情況下,this 指的是全局對象。
- 在函數中,this 指的是全局對象。
- 在函數中,嚴格模式下,this 是 undefined。
- 在事件中,this 指的是接收事件的元素。
像 call() 和 apply() 這樣的方法可以將 this 引用到任何對象。
方法中的 this
在對象方法中,this 指的是此方法的“擁有者”。
在本頁最上面的例子中,this 指的是 person 對象。
person 對象是 fullName 方法的擁有者。
<code>fullName : function() {
return this.firstName + " " + this.lastName;
}
/<code>
親自試一試
單獨的 this
在單獨使用時,擁有者是全局對象,因此 this 指的是全局對象。
在瀏覽器窗口中,全局對象是 [object Window]:
實例
<code>var x = this;/<code>
親自試一試
在嚴格模式中,如果單獨使用,那麼 this 指的是全局對象 [object Window]:
實例
<code>"use strict";
var x = this;
/<code>
親自試一試
函數中的 this(默認)
在 JavaScript 函數中,函數的擁有者默認綁定 this。
因此,在函數中,this 指的是全局對象 [object Window]。
實例
<code>function myFunction() {
return this;
}
/<code>
親自試一試
函數中的 this(嚴格模式)
JavaScript 嚴格模式不允許默認綁定。
因此,在函數中使用時,在嚴格模式下,this 是未定義的(undefined)。
實例
<code>"use strict";
function myFunction() {
return this;
}
/<code>
親自試一試
事件處理程序中的 this
在 HTML 事件處理程序中,this 指的是接收此事件的 HTML 元素:
實例
<code><button>
點擊來刪除我!
/<button>
/<code>
親自試一試
對象方法綁定
在此例中,this 是 person 對象(person 對象是該函數的“擁有者”):
實例
<code>var person = {
firstName : "Bill",
lastName : "Gates",
id : 678,
myFunction : function() {
return this;
}
};
/<code>
親自試一試
實例
<code>var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
/<code>
親自試一試
換句話說,this.firstName 意味著 this(person)對象的 firstName 屬性。
顯式函數綁定
call() 和 apply() 方法是預定義的 JavaScript 方法。
它們都可以用於將另一個對象作為參數調用對象方法。
您可以在本教程後面閱讀有關 call() 和 apply() 的更多內容。
在下面的例子中,當使用 person2 作為參數調用 person1.fullName 時,this 將引用 person2,即使它是 person1 的方法:
實例
<code>var person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person2 = {
firstName:"Bill",
lastName: "Gates",
}
person1.fullName.call(person2); // 會返回 "Bill Gates"
/<code>
閱讀更多 鎮上寶塔 的文章
關鍵字: 瀏覽器 JavaScript 比爾·蓋茨