Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lodash mixin在JavaScript类中不起作用_Javascript_Ecmascript 6_Lodash_Mixins - Fatal编程技术网

Lodash mixin在JavaScript类中不起作用

Lodash mixin在JavaScript类中不起作用,javascript,ecmascript-6,lodash,mixins,Javascript,Ecmascript 6,Lodash,Mixins,我使用lodash的.mixin或.chain链接我的自定义函数。代码在类之外时工作正常,如下所示: 工作代码: function start(data, param1, param2) { _.mixin({ 'someFunc': this.someFunc, 'anotherFunc': this.anotherFunc }) // Chaining directly works _.someFun

我使用lodash的
.mixin
.chain
链接我的自定义函数。代码在类之外时工作正常,如下所示:

工作代码:

     function start(data, param1, param2) {
      _.mixin({
        'someFunc': this.someFunc,
        'anotherFunc': this.anotherFunc
      })

      // Chaining directly works
      _.someFunc(data, param1)
       .anotherFunc(param2)

     // Using chain works
     return _.chain(data)
      .someFunc(param1)
      .anotherFunc(param2)
     }

     function someFunc(data, param) {
       return data;
     }

     function anotherFunc(data, param) {
       return data + param;
     }
当我在类中使用代码时,它开始抛出一个
TypeError:u.chain(…)。someFunc不是一个函数

  import * as _ from 'lodash';

  class MyClass {
    constructor() {
      //.... code
    }

    start(data, param1, param2) {

      // Does not work
      _.mixin({
         'someFunc': this.someFunc,
         'anotherFunc': this.anotherFunc
      })

      // Does not work
      _.someFunc(data, param1)
       .anotherFunc(param2)

      // Also does not work
      return _.chain(data)
       .someFunc(param1)
       .anotherFunc(param2)

     // Using them separately works:
     let result = _.someFunc(param1);
     let result2 = _.anotherFunc(param2);

    }

    someFunc(data, param) {
      return data;
    }

    anotherFunc(data, param) {
      return data + param;
    }


  }
如果有人能解释为什么会发生这种情况,我会非常感激

_.someFunc(data, param1)
 .anotherFunc(param2)
someFunc
不返回lodash包装器对象,因此不能对返回值调用另一个函数


someFunc
不返回lodash包装器对象,因此不能对返回值调用
anotherFunc

关于
return.chain(data).someFunc(param1).anotherFunc(param2).value()的chain方法不应该链接自定义函数吗?为什么这会在类外工作而不是在类内工作?是的,chain做chain自定义函数。
return…
行对我来说很好,您能提供有关错误的更多信息吗?您运行的是什么版本的lodash?lodash 4.17.2。我将它与webpack/angular一起使用。是的,链式教学法在课外对我很有效。在类内部使用时,它会中断。奇怪。除了这个答案中给出的内容外,你的两个例子对我来说都没有错误。可能是
链可能被覆盖了?
..chain(data).value()
返回什么?非常奇怪。我不确定我错过了什么
.chain(data).value()
返回
未定义的
,但仅在类内部返回。那么
返回
链方法不应该链接自定义函数吗?为什么这会在类外工作而不是在类内工作?是的,chain做chain自定义函数。
return…
行对我来说很好,您能提供有关错误的更多信息吗?您运行的是什么版本的lodash?lodash 4.17.2。我将它与webpack/angular一起使用。是的,链式教学法在课外对我很有效。在类内部使用时,它会中断。奇怪。除了这个答案中给出的内容外,你的两个例子对我来说都没有错误。可能是
链可能被覆盖了?
..chain(data).value()
返回什么?非常奇怪。我不确定我错过了什么
..chain(data).value()
返回
未定义的
,但仅在类内部返回。