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

xtx

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

这是我的代码:

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));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

如何在Java中将对象数组作为参数传递

来自分类Dev

在Javascript中将对象作为参数传递给函数

来自分类Dev

如何在 URI 行中将对象作为查询参数传递?

来自分类Dev

如何在Lua中将对象作为回调参数传递

来自分类Dev

在AsyncTask中将对象作为参数传递

来自分类Dev

在 Java 中将对象作为参数传递

来自分类Dev

如何在ngFor中将对象作为组件输入传递

来自分类Dev

如何在 nextjs 中将对象作为道具传递

来自分类Dev

如何在Delphi中将对象方法作为回调方法传递给C ++ dll

来自分类Dev

如何在 JavaScript 中使用对象名称的字符串将对象作为参数传递?

来自分类Dev

如何在C#中将对STATIC方法的引用作为函数参数传递?

来自分类Java

如何在不影响对象的情况下将对象作为参数传递给方法?

来自分类Java

如何在不影响对象的情况下将对象作为参数传递给方法?

来自分类Dev

如何在没有对象的情况下将对象方法作为参数传递

来自分类Javascript

如何将对象属性作为参数传递?(JavaScript)

来自分类Dev

如何在 TypeScript 中将对象作为参数传递给带有可选对象字段的函数?

来自分类Dev

在Javascript中将对象作为参数传递-不仅是参数,还包括根据变量构建的参数

来自分类Dev

WebDriver-如何在数据驱动测试中将对象定位器作为参数传递?

来自分类Dev

如何在Scala中将对象传递给方法

来自分类Dev

如何将对象作为参数传递?

来自分类Dev

如何在WSK(Openwhisk)中将JSON对象作为参数传递

来自分类Dev

如何在C ++中将类(不是对象)作为参数传递

来自分类Dev

如何在javascript函数中将JSON对象作为函数参数传递?

来自分类Dev

如何在C#方法中将Json对象作为参数传递

来自分类Dev

如何在Kendo数据源读取方法中将数组对象作为参数传递?

来自分类Dev

解构分配以在Javascript行为中将对象作为函数的参数传递

来自分类Dev

在Javascript中将对象属性键(而不是其值)作为参数传递

来自分类Dev

在ng-click中将对象作为参数传递

来自分类Dev

在构造函数中将对象作为参数传递

Related 相关文章

  1. 1

    如何在Java中将对象数组作为参数传递

  2. 2

    在Javascript中将对象作为参数传递给函数

  3. 3

    如何在 URI 行中将对象作为查询参数传递?

  4. 4

    如何在Lua中将对象作为回调参数传递

  5. 5

    在AsyncTask中将对象作为参数传递

  6. 6

    在 Java 中将对象作为参数传递

  7. 7

    如何在ngFor中将对象作为组件输入传递

  8. 8

    如何在 nextjs 中将对象作为道具传递

  9. 9

    如何在Delphi中将对象方法作为回调方法传递给C ++ dll

  10. 10

    如何在 JavaScript 中使用对象名称的字符串将对象作为参数传递?

  11. 11

    如何在C#中将对STATIC方法的引用作为函数参数传递?

  12. 12

    如何在不影响对象的情况下将对象作为参数传递给方法?

  13. 13

    如何在不影响对象的情况下将对象作为参数传递给方法?

  14. 14

    如何在没有对象的情况下将对象方法作为参数传递

  15. 15

    如何将对象属性作为参数传递?(JavaScript)

  16. 16

    如何在 TypeScript 中将对象作为参数传递给带有可选对象字段的函数?

  17. 17

    在Javascript中将对象作为参数传递-不仅是参数,还包括根据变量构建的参数

  18. 18

    WebDriver-如何在数据驱动测试中将对象定位器作为参数传递?

  19. 19

    如何在Scala中将对象传递给方法

  20. 20

    如何将对象作为参数传递?

  21. 21

    如何在WSK(Openwhisk)中将JSON对象作为参数传递

  22. 22

    如何在C ++中将类(不是对象)作为参数传递

  23. 23

    如何在javascript函数中将JSON对象作为函数参数传递?

  24. 24

    如何在C#方法中将Json对象作为参数传递

  25. 25

    如何在Kendo数据源读取方法中将数组对象作为参数传递?

  26. 26

    解构分配以在Javascript行为中将对象作为函数的参数传递

  27. 27

    在Javascript中将对象属性键(而不是其值)作为参数传递

  28. 28

    在ng-click中将对象作为参数传递

  29. 29

    在构造函数中将对象作为参数传递

热门标签

归档