2017-02-11 76 views
1

我正在使用lodash的_.mixin_.chain链接我的自定义函数。该代码工作正常时,它是一类,如下之外:Lodash mixin不能在JavaScript中工作类

工作代码:

 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: _.chain(...).someFunc is not a function

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


    } 

如果任何人都可以了解为什么会发生这种情况,我会很感激。

回答

0
_.someFunc(data, param1) 
.anotherFunc(param2) 

someFunc不会返回lodash包装对象,这样你就不能调用的返回值anotherFunc

+0

怎么样'''return _.chain(data).someFunc(param1).anotherFunc(param2).value()'''链式方法是不是应该链接自定义函数?为什么这个课程在课外工作,但不在里面? – mjolnir

+0

是的,链不链自定义功能。 'return ...'行适用于我,你能提供更多关于你的错误的信息吗?你正在运行什么版本的lodash? – EpicOrange

+0

Lodash 4.17.2。我使用它与webpack /角。是的,在课堂之外,连锁方法对我很有用。当在课堂内部使用时,它会中断。 – mjolnir