[英]Javascript context issue using Object.create() and function.apply doesn't seem to work?
在尝试使用 Object.create 时,我遇到了 object 上下文的错误。 这是一个非常简单的例子,但这就是我正在做的:
var object1 = {
func1: function(functionArg){
...
functionArg();
}
}
var object2 = {
func2: {
value: function(){
this.memberVariable = 1;
...
this.func1(this.func3)
}
}
func3: {
value: function(){
if(this.memberVariable == 1){};
...
}
}
}
var newObject = Object.create(object1,object2);
newObject.func2();
表达式 'this.memberVariable' [undefined] 的结果不是 object。
为了记住这个问题,我认为我可以使用 apply 为 function 提供正确的上下文。 所以我用类似的东西替换了object1:
var object1 = {
func1: function(functionArg){
var thisObject = this;
var functionArgApply = function(){
functionArg.apply(thisObject,arguments);
};
...
functionArgApply();
}
}
现在我收到一条错误消息,说表达式“functionArg.apply”[undefined] 的结果不是 function。 我认为这是因为 object2 使用了值表示法。 我尝试将其更改为 functionArg.value.apply 但得到了相同的结果。 这应该工作吗?
任一functionArg
都是字符串,在这种情况下,您必须使用括号表示法:
func1: function(functionArg){
...
this[functionArg]();
}
或者它是 function 参考,在这种情况下应该是
functionArg.apply(this)
这取决于这一行中的func3
是什么: this.func1(func3)
。 就目前而言, func3
没有定义。
无论如何, this.functionArg
是错误的,您在任何地方都没有定义属性functionArg
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.