在js里面對于this的定義是this是在執(zhí)行上下文創(chuàng)建時(shí)確定的一個(gè)在執(zhí)行過程中不可更改的變量牺蹄。只有在調(diào)用時(shí)才能確定this的指向
1.全局作用域或者普通函數(shù)中this指向全局對象window。
//直接打印
console.log(this) //window
- 注意要看運(yùn)行環(huán)境
//function聲明函數(shù)
function test () {console.log(this)}
test() //window
//function聲明函數(shù)賦給變量
var test = function () {console.log(this)}
test() //window
//自執(zhí)行函數(shù)
(function () {console.log(this)})(); //window
//定時(shí)器
setTimeout(function(){
console.log(this)
},1000); //window
2.方法調(diào)用中誰調(diào)用this指向誰
//對象方法調(diào)用
var person = {
run: function () {console.log(this)}
}
person.run() // person
- 看方法是誰調(diào)用的,.前邊是誰this就是誰
//事件綁定
var btn = document.querySelector("button")
btn.onclick = function () {
console.log(this) // btn
}
3.在構(gòu)造函數(shù)中this指向構(gòu)造函數(shù)的實(shí)例
//不使用new指向window
function Company (name) {
console.log(this) // window
this.name = name;
}
Company('hc')
//使用new
function Company(name) {
this.name = name
console.log(this) //company { name: 'hc' }
}
var company = new Company('hc')