js中this的用法比較雜亂,這里總結一下。
一:全局作用域中this指向window對象。
var number = 10;
this.number == window.number ? ?// true
二:在函數內部被調用。
1)“use strict” 模式下返回 undefined;
2)非 "use strict" 模式下 返回 window 對象,無論是被嵌套多少層,在function內部的this,都指向window對象。
三:在實例對象中被調用,指向離它最近的那個對象。
var obj = {
? ? name : "obj",
? ? say : function(){
? ? ? ? ? console.log(this.name);
? ? }
}
上面例子中,離this最近的對象實例是obj,所以this指向obj。
var obj = {
name : "obj",
kid : {
name : "kid",
say : function(){
console.log(this.name);
}
}
}
上面的this指向obj.kid。
四:構造函數中的this指向new出來的實例對象。
五:DOM中的事件綁定,this指向綁定的DOM元素。
DOM對象綁定是一個具體情況,普遍情況可以解釋為:在回調函數中的this,指向調用這個回調函數的對象,比如window.setTimeout中的this指向window。