This指向问题

来源:6-4 this 有几种赋值情况

小怪兽ing

2021-08-09

老师您好,这里我有一个问题

var name = 'xiaowang',age = 17
var obj = {
    name:'xiaozhang',
    objAge:this.age, //17,this代指window
    myFun(){
        console.log(this.name+"age"+ this.age)//this代指对象
    }
}

您之前讲过,作为对象方法被调用,返回对象本身,我知道MyFun里面代指的对象obj本身,this.name也是xiaozhang

但是为什么objAge里面this就是window了?

写回答

2回答

weixin_慕设计4572181

2021-10-24

首先你这个myFun方法是定义在对象里面的,所以只有obj才能调用,所以this.age就是obj里面的age属性,但是obj没有age属性,所以输出undefined

this只在调用那一刻确定

var name = 'xiaowang',age = 17
var obj = {
    name:'xiaozhang',
    age:18 ,
    myFun:myFun
}
function myFun(){
        console.log(`name:${this.name},age:${this.age}`)
    }
    myFun() //name:xiaowang,age:17
    obj.myFun() //name:xiaozhang,age:18


1
0

双越

2021-08-09

你的代码相当于

var t = this

var obj = {
    objAge: t.age
}




1
3
小怪兽ing
回复
双越
好的谢谢老师呐
2021-08-10
共3条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4641 学习 · 1667 问题

查看课程