使用Object.create()和function.apply'似乎不起作用
Javascript context issue using Object.create() and function.apply doesn't seem to work?
我在尝试使用object.create时遇到了对象上下文错误。这是一个非常简单的例子,但我正在做的是:
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"[未定义]的Result不是对象。
为了记住这个问题,我想我可以使用application为函数提供正确的上下文。所以我用替换了object1
var object1 = {
func1: function(functionArg){
var thisObject = this;
var functionArgApply = function(){
functionArg.apply(thisObject,arguments);
};
...
functionArgApply();
}
}
现在我得到一个错误,说表达式"functionArg.apply"[未定义]的结果不是函数。我认为这是因为object2使用了值表示法。我尝试将其更改为functionArg.value.apply,但得到了相同的结果。这样行吗?
functionArg
都是字符串,在这种情况下,必须使用括号表示法:
func1: function(functionArg){
...
this[functionArg]();
}
或者它是一个函数引用,在这种情况下它应该是
functionArg.apply(this)
这取决于func3
在这一行中是什么:this.func1(func3)
。目前,func3
尚未定义。
在任何情况下,this.functionArg
都是错误的,您在任何地方都没有定义属性functionArg
。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- scope.$apply 是未定义的,在 scrolly 指令中不起作用
- 为什么bind()或apply()在这里不起作用,而call()起作用
- Ng-重复在资源查询后不更新 - $apply() 不起作用
- jQuery $.on.apply 不起作用
- AngularJS Scope Apply在单击时不起作用
- AngularJS$apply在输入类型范围的ngChange之后不起作用
- JS-op.继承和apply()函数.为什么没有'不起作用
- 如果没有$scope.$apply,修改作用域将不起作用
- 为什么Array.push.apply不起作用?
- 美元的范围.apply在Angular中不起作用
- 使用Object.create()和function.apply'似乎不起作用