1 回答
TA贡献1794条经验 获得超7个赞
var test={
a:1,
b:this.a
}
console.log(test.b)
来来来,你说一下 test.b 等于多少?
不要想当然自意识认为一个东西,用一个东西首先要去了解这个东西,this 是什么?
首先我们需要得出一个非常重要一定要牢记于心的结论,this的指向,是在函数被调用的时候确定的。
为了你更直观的理解,我们先来看看这个 demo:
var a = 'global'
var path = {
a: 'path',
resolve: function(parm) {
console.log(parm)
console.log(this)
}
}
var obj = {
a: 'obj',
b: path.resolve(this.a)
}
看看输出结果你明白了什么?是不是什么也没明白。
其中的 this.a 中的 this 是全局对象,如果全局对象是 window,那么这个 this 就是 window 对象,如果全局在 node 环境下,那么这个 this 就是 global 对象。
关于全局对象的 this,它是一个比较特殊的存在。全局环境中的 this,指向它本身。因此,这也相对简单,没有那么多复杂的情况需要考虑。
// 通过this绑定到全局对象
this.a2 = 20;
// 通过声明绑定到变量对象,但在全局环境中,变量对象就是它自身
var a1 = 10;
// 仅仅只有赋值操作,标识符会隐式绑定到全局对象
a3 = 30;
// 输出结果会全部符合预期
console.log(a1);
console.log(a2);
console.log(a3);
你说说你这个代码里面的 this 是指向 path 还是 全局对象 window 或者 global 呢?
反正不是指向 module.exports,所以就得不到你想要的结果。
添加回答
举报