- this是函數(shù)執(zhí)行時(shí)才會(huì)創(chuàng)建的一個(gè)內(nèi)部對(duì)象炫隶,表示當(dāng)前持有該函數(shù)的對(duì)象
四類(lèi)場(chǎng)景
- 對(duì)象內(nèi)部的屬性值為函數(shù)主守,使用對(duì)象訪問(wèn)屬性并執(zhí)行函數(shù)時(shí)。this代表當(dāng)前對(duì)象
var person = {
name:"tom",
say:function(){
console.log(this);
}
};
person.say();
person.eat = function(){
console.log(this);
};
person.eat();
document.getElementsByTagName('input')[0].onclick = function(){
console.log(this); //表示input對(duì)象
};
- 構(gòu)造函數(shù)中的this,函數(shù)執(zhí)行時(shí)this表示新對(duì)象
function Person(name,age){
this.name = name;
this.age = age;
console.log(this);
}
var p = new Person("tom",28);
- 使用call或apply主動(dòng)修改函數(shù)時(shí)蕊温,this的指向瞧壮,讓其等于call或apply的第一個(gè)實(shí)參
function getpro(proName){
return this[proName];
}
console.log(getpro("p"));
console.log(getpro.call(person,"name"));
- 除以上三種場(chǎng)景外,this代表的是window
function fn(){
console.log(this);
}
fn();
- 函數(shù)嵌套函數(shù),無(wú)論函數(shù)嵌套多少層境析,都表示window
function fun(){
console.log(this);
function fun(){
console.log(this);
function fun(){
console.log(this);
}
} fun();
fun();
}
fun();
this的固定
document.getElementsByTagName('input')[0].onclick = function(){
var _t =this;//var _this = this; 這叫this的固定
colorful();
function colorful(){
// document.getElementsByTagName('input')[0].className = "colorful";
_t.className = "colorful";
}
};
function colorful(-t){
// document.getElementsByTagName('input')[0].className = "colorful";
_t.className = "colorful";
}