[英]javascript - how to refer object itself?
var myObj= function(){
console.log(self.myNum) //<- need to fix here
}
myObj.myNum=3;
myObj();
我想在myObj
使用myObj.myNum
但不使用myObj
..
console.log(myObj.myNum) // <-so not this way
也,
console.log(this.myNum) // <-this is not what I want.
this
不是指对象本身,它指的是什么调用函数..
它甚至可能吗?
这是一个稍微不同寻常的用例。 如果您更详细地解释了您的问题,也许最终我们会找到更好的方法。
我没有看到其他建议的答案(在+2,现在已删除)如何工作。 我可以想到一种令人费解的方式:创建绑定函数。
遗憾的是,这种天真的做法在这里不起作用,例如这段代码:
var myObj = function(){
console.log(this.myNum);
}.bind(myObj); //this will not work
将具有全局对象为this
,因为在绑定调用的时候,MyObj中仍然是不确定的。
但是,您可以创建一个附加函数,它是原始函数的绑定版本,它this
解释为原始函数(即自身 ),如下所示:
var myObj = function(){
console.log(this.myNum);
};
var myBoundObj = myObj.bind(myObj);
myObj.myNum=3;
myBoundObj(); //outputs 3
这里调用myBoundObj()
将根据需要输出3,并且它不会通过其名称引用它自己。 (但由于轻微的扭曲,这可能不适用于您的情况。创建绑定后,您在编辑中提到的调用者上下文问题不存在。)
您可以为函数提供可在内部使用的额外名称:
var myObj = function myOwnObj() {
console.log(myOwnObj.myNum)
}
myObj.myNum = 47;
myObj();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.