z***@163.com
z***@163.com
  • 发布:2017-03-01 11:14
  • 更新:2017-03-01 11:35
  • 阅读:854

bug:this 的问题

分类:HBuilder

前提,我在Hbuilder上安装了插件nodeeclipse(node.js插件):

运行代码:
var fullname = 'John Doe';
var obj = {
fullname: 'Colin Ihrig',
prop: {
fullname: 'Aurelio De Rosa',
getFullname: function() {
return this.fullname;
}
}
};
 
console.log(obj.prop.getFullname());
 
var test = obj.prop.getFullname;
 
console.log(test());

在js中 右键‘运行方式’---‘Node Application’ (Hbuilder内置控制台)运行结果为:
Aurelio De Rosa
undefined

在html中创建script 中(Hbuilder内置控制台)运行结果为:
[Web浏览器] "Aurelio De Rosa" /TEXT/js/this.js (11)
[Web浏览器] "John Doe" /TEXT/js/this.js (13)

2017-03-01 11:14 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

以上反馈的信息有误,第一个log中始终是undefined。

javascript中的this,谁调用就指向谁。

obj.prop.getFullname(),此时this指向obj.prop,但是prop并没有fullname属性,所以返回undefined。

test在不同环境下的表现不同
浏览器环境下
而test调用的时候,this指向全局的window,全局变量是window的属性,因而会返回全局变量fullname的值。

node环境下
this指向node环境下的全局对象,但全局变量不是全局对象的属性,因而是undefined。

该问题目前已经被锁定, 无法添加新回复