我在 nodejs 中使用 JSON-RPC 库。我按名称注册我的函数(例如rpc({publicName: privateFunction})
),RPC 库为我调用函数并处理 JSON 和函数参数的编组。它适用于简单的函数,但是当我向它传递一个原型函数(在对象的原型链上定义的函数)时它会中断。问题是 RPC 库正在调用apply
更改上下文的函数,this
因此我无法再访问其他原型属性/函数。
这是问题的一个例子:
var MyObj = function(prop1,prop2,prop3){
this.prop1 = prop1;
this.prop2 = prop2;
this.prop3 = prop3;
}
MyObj.prototype.showProps = function(separator){
console.log(this.prop1 + separator + this.prop2 + separator + this.prop3);
}
var myObjInstance = new MyObj('a', 'b', 'c');
myObjInstance.showProps(',');
// displays a,b,c
// I register the function as rpc({show_props:myObjInstance.showProps}) and the RPC lib calls it like
myObjInstance.showProps.apply(this, [',']);
// displays undefined,undefined,undefined
有没有更好的技术来解决这个问题?有没有办法保留this
原型函数内部的上下文?