var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName; } };
JavaScript this 關鍵詞指的是它所屬的對象。瀏覽器
它擁有不一樣的值,具體取決於它的使用位置:app
像 call() 和 apply() 這樣的方法能夠將 this 引用到任何對象。函數
在對象方法中,this 指的是此方法的「擁有者」。this
在本頁最上面的例子中,this 指的是 person 對象。spa
person 對象是 fullName 方法的擁有者。code
fullName : function() { return this.firstName + " " + this.lastName; }
在單獨使用時,擁有者是全局對象,所以 this 指的是全局對象。對象
在瀏覽器窗口中,全局對象是 [object Window]:blog
var x = this;
在嚴格模式中,若是單獨使用,那麼 this 指的是全局對象 [object Window]:教程
"use strict"; var x = this;
在 JavaScript 函數中,函數的擁有者默認綁定 this。事件
所以,在函數中,this 指的是全局對象 [object Window]。
function myFunction() { return this; }
JavaScript 嚴格模式不容許默認綁定。
所以,在函數中使用時,在嚴格模式下,this 是未定義的(undefined)。
"use strict"; function myFunction() { return this; }
在 HTML 事件處理程序中,this 指的是接收此事件的 HTML 元素:
<button onclick="this.style.display='none'">
點擊來刪除我!
</button>
在此例中,this 是 person 對象(person 對象是該函數的「擁有者」):
var person = { firstName : "Bill", lastName : "Gates", id : 678, myFunction : function() { return this; } };
var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName; } };
換句話說,this.firstName 意味着 this(person)對象的 firstName 屬性。
call() 和 apply() 方法是預約義的 JavaScript 方法。
它們均可以用於將另外一個對象做爲參數調用對象方法。
您能夠在本教程後面閱讀有關 call() 和 apply() 的更多內容。
在下面的例子中,當使用 person2 做爲參數調用 person1.fullName 時,this 將引用 person2,即便它是 person1 的方法:
var person1 = { fullName: function() { return this.firstName + " " + this.lastName; } } var person2 = { firstName:"Bill", lastName: "Gates", } person1.fullName.call(person2); // 會返回 "Bill Gates"