javascript中使用this关键字的大总结

时间:2022-01-03 19:22:38

a.函数创建时产生一个this.

function box(){alert(this)};//指向window

 

b.(谁调用指向谁)当有事件绑定,并执行了事件处理程序时,谁绑定的事件,事件处理程序中的this指向谁。

btn.onclick = function(){alert(this)};//绑定了事件,this事件的绑定者。

 

c.回调函数中的this指向window

setTimeout(function(){alert(this)});//任何地方使用定时器,里面的this都指向window

 

d.匿名函数可以使用bind()改变this的指向call()和apply()可以改变函数中的this指向

setTimeout(function(){alert(this)}.bind(btn));//使用bind()方法可以改变匿名函数this指向。

 

e.箭头函数本身没有this,它的this是继承父级而来。

btn.onclick = () => {alert(this)};//箭头函数的this指向父级执行环境,这里为window

 

f.箭头函数不能使用call()、apply() 和 bind()来改变this指向

setTimeout(()=>{alert(this)}.bind(this));//箭头函数无法用call()、apply() 和 bind()来改变this指向

 

g.严格模式下,全局函数的this是undefined;

“use strict”;

function box(){alert(this)};//严格模式下,this为undefined;

 

h:面向对象下的this

使用new 关键字创建一个实例对象,构造函数中的this指向了该实例对象,同时实例对象的this指向构造函数的原型对象。

function Box(name){

this.name = name;

}

Box.prototype.run = function(){this};

new Box(“tom”).run();//this指向Box.prototype。