我已经在JavaScript中做了这样的功能:有没有办法从方法中获取此/上下文?
var syncCall = function(cb, obj, fn) {
var params = [];
for(var i=3; i< arguments.length; i++) {
params.push(arguments[i]);
}
fn.apply(obj, params)
.onReject(function(result){
console.error(result);
})
.onFulfill(function(result){
if(cb != undefined && cb != null) {
cb(result);
}
});
};
的问题是,我必须passs obj
PARAM到syncCall function, to set proper context of
这inside
fn`当它被调用。
在我的情况下,fn
始终是一个方法/函数,它存储在obj
属性之一中。因此通常在执行例如obj.myFunctionname()
时,myFunctionname
内的this
运营商参考obj
。我想知道,如果我能采取这个事实的冒险。意,具有fn
作为参数来syncCall
时,采取某种方式的上下文(其为obj
)并正确传递到apply()
用作第一参数
*这*是不是“背景”,它只是在通话或使用设置的参数*绑定*。如果你想调用* syncCall *作为'obj.syncCall',这样* this *内的函数是* obj *,然后将它添加到* Object.prototype *,所以你会做'obj.syncCall(cb,fn) '和'... fn.apply(this,param)...'。请注意,这样做是不喜欢的,因为它可以打破糟糕的写入..循环。所以你可以有一个* Obj *构造函数并且有'Obj.prototype.syncCall'。 – RobG 2014-10-29 20:30:22
@RobG我已经试过这个你完全正确的地方。我试图通过原型扩展的对象有一些for..in构造,并开始表现出意想不到的同时有新的属性/函数asyncCall。因此,我选择了'thesebas'提出的解决方案,下面是 – BartoszK 2014-10-30 20:14:20