前言:對於沒有使用嚴格模式的情況,this物件才會起作用。 this物件是在運行時,被函數的執行環境所綁定的。
情況1:在全域函數中,this等於window,只有當函數作為某個物件的方法呼叫時,this才會等於那個物件。還不知道什麼是全域函數的請參考這裡點擊開啟連結
情況2:匿名函數的執行環境具有全域性,this通常指向window
例如
var name = "window"; var object = { name: "Object name", getNameFunc: function () { return function (){ return this.name; }; } }; console.log(object.getNameFunc() ()); // 输出window
情況3:把外部作用域中的this物件保存在一個閉包能夠存取到的變數裡,可以讓this指向該作用域中的this物件
例如
var name = "window"; var object = { name: "Object name", getNameFunc: function () { var that = this; return function (){ return that.name; }; } }; console.log(object.getNameFunc() ()); // 输出Object name
情況4:把函數先賦值再執行,this的值不能維持
#例如
var name = "window"; var object = { name: "Object name", getName: function () { return this.name; } }; console.log((object.getName = object.getName) ()); // 输出window
情況5:透過call或apply改變函數的執行環境的,this就會指向其他物件
以上是js中this的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!