为什么“this”指的是对象“obj”而不是全局对象
Why does 'this' refer to the object 'obj' not global object
var obj = {
name: 'hello',
getName: function(){
return () => {return this.name; }
}
}
var name = 'world';
var nameFunc = obj.getName();
console.log(nameFunc())
结果是"你好",而不是"世界"。我有点困惑。
箭头函数"诞生"绑定到this
的值,就像它们创建时一样。当您拨打getName()
电话时:
var nameFunc = obj.getName();
那么在getName()
里面,this
的值是对obj
的引用。 您的 return
语句构造箭头函数,因此该函数绑定到 obj
。就好像你写了:
getName: function() {
return function() {
return this.name;
}.bind(this);
}
这只是箭头函数的工作方式,是的,它与常规函数不同。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 全局对象是属于哪个类的对象
- javascript无法重新定义函数内部的全局对象
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- Javascript,从静态函数中打印全局对象
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 向调用全局javascript函数的对象添加处理程序
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- 警告 - 全局 THIS 对象的危险使用
- 在全局声音管理器对象上完成
- 将对象传递给指令不允许全局变量
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- 将对象插入到全局数组
- Javascript外部对象全局
- 对象 [对象全局] 没有方法“附加事件”
- 如何使javascript对象全局可用
- 在 AngularJS 中使对象全局化
- 未捕获的类型错误: 对象 [对象全局] 没有方法
- Cheerio:SyntaxError:属性选择器格式不正确:对象全局
- 在复杂的AngularJS应用中使对象全局可访问和可操作的最好方法