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