内部类对方法的引用不起作用

时间:2019-04-14 15:32:39

标签: javascript function ecmascript-6

我有一个类执行一些简单的逻辑运算,例如NAND。 在内部,其他功能建立在NAND上,使得AND由两个NAND构成。

class Logic {
    constructor(a,b) {
        this.a = a;
        this.b = b;
    }

    NAND(a,b) {
        return !(a && b); 
    }

    OR(a,b) {
       return this.NAND(this.NAND(a,a),this.NAND(b,b)); 
    }
}

在单元测试中,我想确保它可以正常工作并且没有问题:

describe('Testing the OR method', function() {
    it('OR 0,0 should return 0', function() {
        let o = logic.OR(0,0);
        assert.equal(o,0);
    });
    it('OR 0,1 should return 1', function() {
        let o = logic.OR(0,1);
        assert.equal(o,true);
    });
    it('OR 1,0 should return 0', function() {
        let o = logic.OR(1,0);
        assert.equal(o,true);
    });
    it('OR 1,1 should return 0', function() {
        let o = logic.OR(1,1);
        assert.equal(o,true);
    });
});  

但是,当我在类中添加一个以后要用于测试的函数时,它会失败。

getFunction(which) {
    switch(which.toLowerCase()) {
        case '&&':
        case 'and':
        case '^':   return this.AND;
        case '!&&':
        case 'nand':
        case '!^':  return this.NAND;
        case '||':
        case 'or':
        case 'v':   return this.OR;
        case '!':
        case 'not': return this.NOT;
        default:    return null;
   }
}

在测试中,此操作失败:

describe('Testing function retrieval', function() {
    it('Should return the AND function', function() {
        let f = logic.getFunction('^');
        assert.equal(f.name,'AND');
        console.log(f(1,1));
    });
});   

该断言实际上评估为true,但是执行该函数失败并显示:

TypeError: Cannot read property 'NAND' of undefined

有什么想法吗?

0 个答案:

没有答案