减少javascript代码

时间:2017-04-25 16:41:38

标签: javascript angular oop

我的角度项目中有两个函数,一个是aceitaProposta,它执行此操作:

aceitaProposta() {
    this.aceita();
    // some other code
}

我有recusaProposta

recusaProposta() {
    this.recusa();
    // some other code
}

现在,this.recusathis.aceita之间的唯一区别是第一个增加一个属性,第二个减少它。我想知道是否有一种方法可以将这两个函数转换为一个函数,只使用类似if的函数来确定它是递减还是递增。这样我就可以在aceitaPropostarecusaProposta中调用相同的函数。例如:

aceitaProposta() {
   this.incrementDecrement();
    // some other code
}

recusaProposta() {
    this.incrementDecrement();
    // some other code
}

3 个答案:

答案 0 :(得分:2)

应该很容易。

function incrementDecrement(inc: boolean)
{
    inc ? this.prop++ : this.prop--;
}

答案 1 :(得分:1)

@KingFelix有它。只需传递一个布尔值。

incrementDecrement(shouldIncrement: boolean) {
  shouldIncrement ? value++ : value--;
}

aceitaProposta() {
    this.incrementDecrement(true);
}

recusaProposta() {
    this.incrementDecrement(false);
}

答案 2 :(得分:1)

另一种方法是使用ES6和更多“功能”代码。使参数成为函数而不是布尔值。然后在你传递的函数中进行更改。

update(alteration) {
    x = alteration(x);
}

aceitaProposta() {
    this.update((x) => x - 1);
}

recusalProposta() {
    this.update((x) => x + 1);
}

如果没有ES6,它有点难看,但你只需添加匿名函数声明。