老师看看这个
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、箭头函数里的this是定义时的所在的对象,那么代码中,函数say2方法就绑定了this,say2与xiaoming属于同一级,而xiaoming在windows上,所以say2的this也是指向windows的。
2、settimeout 里面的this是window,是因为settimeout是挂载在window下,所以this指向的是window。
3、因为这个this所处环境是getAge, getAge是普通函数,函数内部的this指向调用的函数,通过xiamoing这个对象调用getAge,this指向的就是xiaoming。
同学再理解一下。
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星