如何在ES6中获得对类函数的引用?

旅行技术专家

抱歉,问题太简单了,但是我在这里遗漏了一些东西。刚刚切换了一个ES5模块,如下所示:

module.exports = {
  func1: function(a, b) {...},
  func2: function(a, b) {...}
};

对于如下所示的ES6类:

export default class {
  func1(a, b) {...}
  func2(a, b) {...}
}

一切都很好:在两种情况下,我都可以export mod from 'module';打电话给mod.func1(a, b)mod.func2(a, b)

但是,我有一个函数,它需要一个模块函数来调用:

var caller = function(func, val1, val2) {
  let a = something(val1);
  let b = something(val2);
  return func(a, b);
};

当我打电话给caller(mod.func1, x, y)我时,第一个实现可以得到理想的结果,而第二个实现则可以得到理想的结果undefined is not a function

在两种情况下都打印出mod.func1返回[Function],但是显然从ES6类返回了其他内容。

我在做什么错,如何获得可以在另一个函数中调用的类函数?

更新:在第二种实现中,我忘记添加实例化代码:

import Mod from 'module';
var mod = new Mod();
肖恩·维埃拉(Sean Vieira)
class MyClass {
  method(args) {}
}

是以下方面的简称:

function MyClass() {}
MyClass.prototype.method = function(args){};

您正在寻找的是static构造函数上的方法,该方法在ES {3,5}中是通过以下方式完成的:

function MyClass() {}
MyClass.method = function(args){};

在ES6中是使用static修饰符完成的

export default class {
  static func1(a, b) { /* stuff */ }
  static func2(a, b) { /* stuff */ }
}

但是,即使在一个对象中也可以使用速记方法,因此在一般情况下使用普通对象更容易:

export default {
  func1(a, b) {/* stuff */},
  func2(a, b) {/* stuff */}
}

为什么原型方法在构造函数上不可用?

因为在ES3或ES5中不是这样:

function MyClass() {};
MyClass.prototype.method = function(args) {};

MyClass.method  // undefined

var instance = new MyClass();
instance.method  // function(args) {}

创建实例对于访问原型上的方法是必需的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ES6类内部声明局部函数?

来自分类Dev

如何在 ES6 类中使用匿名函数

来自分类Dev

如何在javascript es6类构造函数中声明一个对象

来自分类Dev

如何在 ES6 类构造函数中创建和填充二维数组

来自分类Dev

如何在 ES6 中执行超类的承诺

来自分类Dev

如何在es6中创建析构函数

来自分类Dev

Javascript ES6 + Jquery:如何在ajax请求的成功回调函数中调用类的方法?

来自分类Dev

React如何以这样的方式调用ES6类的render函数,即`this`不引用类本身?

来自分类Dev

Javascript 在类构造函数中调用类 (ES6)

来自分类Dev

我如何在ES6课程中获得道具?

来自分类Dev

如何通过角度的ES6“类”函数传递数据

来自分类Dev

在类React ES6中调用静态函数

来自分类Dev

Javascript ES6 Promise在类函数中

来自分类Dev

Javascript ES6 Promise在类函数中

来自分类Dev

如何在访存函数中更新es6中的变量?

来自分类Dev

如何在Typescript ES6类中扩展Backbone.Events?

来自分类常见问题

如何在节点4中正确导出ES6类?

来自分类常见问题

如何在ES6类中创建“公共静态字段”?

来自分类Dev

如何在es6类中声明私有变量和私有方法

来自分类Dev

如何在Javascript ES6中向类添加方法

来自分类Dev

如何在ES6中使用类扩展对象?

来自分类Dev

如何在JavaScript ES6类中链接异步方法

来自分类Dev

如何在 Node 7.10 (ES6) 中检查对象的类

来自分类Dev

如何在 ES6 类中使用组合方法?

来自分类Dev

如何在React es6组件中定义静态函数?

来自分类Dev

如何在javascript es6中替换jQuery .val()函数?

来自分类Dev

如何在ES6中解析函数参数名称

来自分类Dev

如何在 reactjs ES6 中的 JSONArray 上使用 .map() 函数

来自分类Dev

ES6 map 函数如何在 JSX 中创建对象数组

Related 相关文章

  1. 1

    如何在ES6类内部声明局部函数?

  2. 2

    如何在 ES6 类中使用匿名函数

  3. 3

    如何在javascript es6类构造函数中声明一个对象

  4. 4

    如何在 ES6 类构造函数中创建和填充二维数组

  5. 5

    如何在 ES6 中执行超类的承诺

  6. 6

    如何在es6中创建析构函数

  7. 7

    Javascript ES6 + Jquery:如何在ajax请求的成功回调函数中调用类的方法?

  8. 8

    React如何以这样的方式调用ES6类的render函数,即`this`不引用类本身?

  9. 9

    Javascript 在类构造函数中调用类 (ES6)

  10. 10

    我如何在ES6课程中获得道具?

  11. 11

    如何通过角度的ES6“类”函数传递数据

  12. 12

    在类React ES6中调用静态函数

  13. 13

    Javascript ES6 Promise在类函数中

  14. 14

    Javascript ES6 Promise在类函数中

  15. 15

    如何在访存函数中更新es6中的变量?

  16. 16

    如何在Typescript ES6类中扩展Backbone.Events?

  17. 17

    如何在节点4中正确导出ES6类?

  18. 18

    如何在ES6类中创建“公共静态字段”?

  19. 19

    如何在es6类中声明私有变量和私有方法

  20. 20

    如何在Javascript ES6中向类添加方法

  21. 21

    如何在ES6中使用类扩展对象?

  22. 22

    如何在JavaScript ES6类中链接异步方法

  23. 23

    如何在 Node 7.10 (ES6) 中检查对象的类

  24. 24

    如何在 ES6 类中使用组合方法?

  25. 25

    如何在React es6组件中定义静态函数?

  26. 26

    如何在javascript es6中替换jQuery .val()函数?

  27. 27

    如何在ES6中解析函数参数名称

  28. 28

    如何在 reactjs ES6 中的 JSONArray 上使用 .map() 函数

  29. 29

    ES6 map 函数如何在 JSX 中创建对象数组

热门标签

归档