var myObj= function(){
console.log(self.myNum) //<- need to fix here
}
myObj.myNum=3;
myObj();
我想在myObj.myNum
中使用myObj
但不使用myObj
..
console.log(myObj.myNum) // <-so not this way
也
console.log(this.myNum) // <-this is not what I want.
this
没有引用对象本身,它指的是调用函数的内容。
甚至可能吗?
答案 0 :(得分:2)
这是一个稍微不寻常的用例。如果您更详细地解释了您的问题,也许最终我们会找到更好的方法。
我看不出其他建议的答案(在+2,现在已删除)是如何工作的。我可以想到一种令人费解的方式:创建绑定函数。
可悲的是,这种天真的做法在这里不起作用,例如这段代码:
var myObj = function(){
console.log(this.myNum);
}.bind(myObj); //this will not work
将全局对象设为this
,因为在绑定调用时,myObj仍未定义。
但是,您可以创建一个附加功能,它是原始功能的绑定版本,它将this
解释为原始功能(即本身),如下所示:< / p>
var myObj = function(){
console.log(this.myNum);
};
var myBoundObj = myObj.bind(myObj);
myObj.myNum=3;
myBoundObj(); //outputs 3
此处调用myBoundObj()
将根据需要输出3,并且不会通过其名称引用自身。 (但由于轻微的扭曲,这可能不适用于您的情况。创建绑定后,您在编辑中提到的调用者上下文问题不存在。)
答案 1 :(得分:2)
您可以为函数提供一个可在内部使用的额外名称:
var myObj = function myOwnObj() {
console.log(myOwnObj.myNum)
}
myObj.myNum = 47;
myObj();