将ES6类方法作为要在函数内部调用的函数参数传递

时间:2015-08-29 12:23:23

标签: javascript ecmascript-6

如何修复下面的代码,以便能够使用call调用类方法。

班级定义:

class User {
   constructor(..) {...}
   async method(start, end) {}
}

尝试将类方法作为函数参数传递:

const User = require('./user'); 

async function getData(req, res) {
  // User.method is undefined, since User refers to User constructor
  await get(req, res, User.method); 
}

async function get(req, res, f) {
  let start = ...;
  let end = ...;
  let params = ...;
  let user = new User(params);
  // f is undefined here
  let stream = await f.call(user, start, end); 
}

1 个答案:

答案 0 :(得分:4)

  

用户方法未定义,因为User引用了构造函数

您正在寻找User.prototype.method

async function getData(req, res) {
    await get(req, res, User.prototype.method); 
}

请记住,ES6类的东西是基于语言原型性质的语法糖。