繁体   English   中英

如何在Javascript中将对象的方法作为参数传递

[英]How to pass object's method as a parameter in Javascript

无法弄清楚如何正确地将对象的方法作为参数传递。

这是我的代码:

var MyTest = function (p1) {
  this.p1 = p1;
};
MyTest.prototype.getParam = function () {
  return this.p1;
};

function doAction(getParamCallback) {
  console.log(getParamCallback());
}

var mt = new MyTest(123);
console.log(mt.getParam()); // 123
doAction(mt.getParam);      // undefined

我发现正确传递方法的唯一方法是传递对象和方法并使用 call():

function doAction2(obj, getParamCallback) {
  console.log(getParamCallback.call(obj));
}
doAction2(mt, mt.getParam);    // 123

有什么方法只需要传递方法,而不需要同时传递方法和对象?

您还需要传递this上下文。 在提供的示例中,方法是在window的上下文中调用的,并且window没有属性p1

使用.bind()传递上下文。 bind返回一个函数,该函数在稍后执行时将具有用于调用原始函数的正确上下文集。 通过这种方式,您可以在异步回调和事件中维护上下文。[ 参考]

尝试这个:

 var MyTest = function(p1) { this.p1 = p1; }; MyTest.prototype.getParam = function() { return this.p1; }; function doAction(getParamCallback) { alert(getParamCallback()); } var mt = new MyTest(123); doAction(mt.getParam.bind(mt));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM