老师看看这个

老师看看这个

1,

// const xiaoming = {

//     name: '小明',

//     say1: function () {

//         console.log(this);  //this指向小明

//     },

//     say2: () => {

//         console.log(this);   //this指向window    this指的是定义的时候所处环境中的this,这个和小明同级 this那就指向window????这句话没看懂      这个和小明同级 this那就指向window 这句也没有看懂???

//     }

// }

// xiaoming.say1();

// xiaoming.say2();


2,

// const xiaoming = {

//  name: 'xiaoming',

//  age: null,

//  getAge: function() {

//      // ...ajax

//      setTimeout(function() {

//          console.log(this);  //这个this为什么会指向window???

//      }, 1000);

//  }

// };

// xiaoming.getAge();

3,

const xiaoming = {

name: 'xiaoming',

age: null,

getAge: function () {

// ...ajax

setTimeout(() => {

this.age = 14;

console.log(this);   //箭头函数无this   this指的是定义的时候所处环境中的this也就是getAge的this  这个this呢就是指向小明    这个为啥和1,中的不一样?  为啥这个this就是指向xiaoming 而1,中的this就指向window?

}, 1000);


}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕码 2020-08-20 19:12:46

同学你好,解答如下:

1、箭头函数里的this是定义时的所在的对象,那么代码中,函数say2方法就绑定了this,say2与xiaoming属于同一级,而xiaoming在windows上,所以say2的this也是指向windows的。

http://img1.sycdn.imooc.com//climg/5f3e58bb09c5e5c008360326.jpg

2、settimeout 里面的this是window,是因为settimeout是挂载在window下,所以this指向的是window。

3、因为这个this所处环境是getAge, getAge是普通函数,函数内部的this指向调用的函数,通过xiamoing这个对象调用getAge,this指向的就是xiaoming。

同学再理解一下。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师