匿名函数下this指向window,及解决办法;箭头函数的this指向问题

匿名函数下this指向window,及解决办法;箭头函数的this指向问题

匿名函数下this指向window

var name = "小明";

var Data = {

name: "xiaoming",

init: function() {

setTimeout(function() {

console.log(this.name); //'小明'

}, 1000)

}

}

Data.init();

/*匿名函数中,this指向的是window*/

解决匿名函数下this指向window的问题,让他指向当前函数

1.通过that

var name = "小明";

var Data = {

name: "xiaoming",

init: function() {

var that=this; //定义一个that

setTimeout(function() {

console.log(that.name); //'xiaoming'

}, 1000)

}

}

Data.init();

2.通过bind

var name = "小明";

var Data = {

name: "xiaoming",

init: function() {

setTimeout(function() {

console.log(this.name);//'xiaoming'

}.bind(this), 1000) //.bind(this)来处理

}

}

Data.init();

3.通过es6的箭头函数

var name = "小明";

var Data = {

name: "xiaoming",

init: function() {

setTimeout(()=> {

console.log(this.name);//'xiaoming'

}, 1000)

}

}

Data.init();

为什么箭头函数会改变this的指向???

普通函数:this的指向是在函数执行的时候绑定的,而不是在函数创建时绑定的,谁调用指向谁,this指向的是最后调用它的对象。

箭头函数:this的指向是在函数创建的时候绑定的,而不是在函数执行时绑定的

不管在什么情况下,箭头函数的this跟外层function的this一致,外层function的this指向谁,箭头函数的this就指向谁,如果外层不是function则指向window

// this指向最后调用它的对象

var heroName = '黄蓉';

var obj={

heroName:'huangrong',

init:function(){

console.log(this.heroName) //'huangrong'

}

}

obj.init();

// 箭头函数的this跟外层function的this一致

var heroName = '黄蓉';

var obj={

heroName:'huangrong',

init:()=>{

console.log(this.heroName)//'黄蓉'

}

}

obj.init();

// 箭头函数的this跟外层function的this一致

var heroName = '黄蓉';

function obj() {

this.heroName = 'huangrong'

const foo = () => {

console.log(this.heroName)//=>huangrong

}

foo();

}

obj();

参考:https://mp.weixin.qq.com/s/N2pWofcWuEz0kmJADUT02g

相关推荐

2022 国际篮联 FIBA 发布女子篮球世界杯 LOGO
365bet亚洲真人网址

2022 国际篮联 FIBA 发布女子篮球世界杯 LOGO

🗓️ 07-15 👁️ 4666
手机上做ppt用哪个软件最好(手机ppt用什么软件做最好)
365体育app手机版下载

手机上做ppt用哪个软件最好(手机ppt用什么软件做最好)

🗓️ 08-12 👁️ 7118
小米手机后壳更换:价格、渠道及注意事项详解
365体育app手机版下载

小米手机后壳更换:价格、渠道及注意事项详解

🗓️ 08-31 👁️ 6053
淘宝能借钱吗,淘宝借钱攻略
365体育app手机版下载

淘宝能借钱吗,淘宝借钱攻略

🗓️ 08-01 👁️ 4465
亲测每天稳赚十元的app:这几款app我十分钟就能赚
365bet亚洲真人网址

亲测每天稳赚十元的app:这几款app我十分钟就能赚

🗓️ 08-14 👁️ 6749
渗漉提取
365玩球安全吗

渗漉提取

🗓️ 09-24 👁️ 4173
3d模型渲染了是白色的什么原因?怎么解决?--模大狮模型网
365体育app手机版下载

3d模型渲染了是白色的什么原因?怎么解决?--模大狮模型网

🗓️ 07-11 👁️ 9502
学术讲座(八十二):卟啉小分子在太阳能电池中的应用
365bet亚洲真人网址

学术讲座(八十二):卟啉小分子在太阳能电池中的应用

🗓️ 10-29 👁️ 4846
【攻略】教你不花費獵人點數速刷七彩礦,內含刷法原理說明 @魔物獵人 系列 哈啦板
购买和出售 CS:GO 皮肤
365玩球安全吗

购买和出售 CS:GO 皮肤

🗓️ 07-23 👁️ 6304
华为手机的录音机在哪里
365玩球安全吗

华为手机的录音机在哪里

🗓️ 11-05 👁️ 6817
中国风水在线计算工具
365bet亚洲真人网址

中国风水在线计算工具

🗓️ 08-10 👁️ 241