Получить другой вывод из конца цепочки методов - PullRequest
0 голосов
/ 19 декабря 2018

Если у меня есть цепочка методов, которая выглядит примерно так:

object.value.add(1).multiply(2);

И объект таков:

var object = {
    "value":1,
    "add":function(x){
        this.value = this.value + x;
        return this;
    },
    "multiply":function(x){
        this.value = this.value * x;
        return this;
    }
}

Это будет выводить:

{
    "value":4,
    "add":function(x){
        this.value = this.value + x;
        return this;
    },
    "multiply":function(x){
        this.value = this.value * x;
        return this;
    }
}

Но я хочу, чтобы он вывел:

4

Возможно ли это?И я не хочу делать другой метод для вывода, я хочу, чтобы метод «multiply» (и метод «add») умножал весь объект, если он не последний в цепочке методов (так что цепочка методов)возможно), но когда он последний, я хочу, чтобы он вывел атрибут "value".

1 Ответ

0 голосов
/ 19 декабря 2018

Нет эффективного способа (может даже не быть) для метода, чтобы узнать, является ли он последним членом цепочки.

Почему бы и нет?

object.add(1).multiply(2).value

Вы также можете использовать valueOf в очень специфических сценариях, но его нельзя использовать как стратегию общего назначения для этой цели.

var object = {
    "value":1,
    "add":function(x){
        this.value = this.value + x;
        return this;
    },
    "multiply":function(x){
        this.value = this.value * x;
        return this;
    },
    valueOf: function () { return this.value; }
};

console.log(object.add(4).multiply(2) / 2); //5
...