this指向问题
来源:5-7 开发路由(博客列表路由)(上)

学习小机器
2019-11-03
老师你好,我对这里的this指向不是很清楚,想请教你一下。
在blog.js中将SuccessModel对象实例化,但是没有声明一个变量来接收,直接return。这样的话,是不是有点类似于匿名函数,这里的this.data和this.message指向的是全局。
还有,对data和message作兼容之后,为什么要把data和message再置空呢。
2回答
-
渡____
2020-01-29
首先要明白this是谁调用它,它就是谁。
在构造函数中,如果想调用它,需要用new关键字。
看代码:return new SuccessModel(listData)
可以发现new这个构造函数时并没有将其赋值给任何东西,而是return到了前一层代码去接收。
接下来使用new调用这个构造函数时会创建一个空对象作为函数的上下文。即this
置空是因为下面还有两个if,需要判断boolean,而null=false
其实两个if可以使用else会更加清晰,也不用进行置空操作
if(typeof(data)==="string"){
this.msg=data
}else{
this.data=data
this.msg=msg
}
00 -
双越
2019-11-03
第一,"这里的this.data和this.message指向的是全局"—— 在 new class 时,this 并不是指向全局,可以去查查 ES6 class 文档。
第二,基于你的截图,如果要调用 new BaseModel('this is message') ,constructor 会怎样处理?可以自己先屡一下。
00
相似问题