簡體   English   中英

javascript類中的方法鏈接

[英]Method chaining in class in javascript

我是javascript新手。 我正在嘗試弄清楚類的工作方式。 我有這段代碼:

class TestObject {
  constructor(initialNumber) {
    this.result = initialNumber;
}
  add(number) {
    this.result += number;
    return this;
  }
}

const value = new TestObject(7)
    .add(2)
    .add(3);
console.log(value)

值返回像這樣{result: 12}但是我需要它只是整數12 是否可以通過僅在類主體中進行更改來解決此問題?

由於您的value變量是TestObject的實例,因此您可以使用

console.log(value.result);

 class TestObject { constructor(initialNumber) { this.result = initialNumber; } add(number) { this.result += number; return this; } } const value = new TestObject(7) .add(2) .add(3); console.log(value.result); 

... 僅通過在班級主體中進行更改?

不。您還必須在其外部進行更改,因為您的add方法返回的是對象,而不是數字。 因此,必須說“我想要一個電話號碼”。

如果將valueOf方法添加到類中:

valueOf() {
    return this.result;
}

...然后類主體之外的東西可能只是一個+

console.log(+value);

...但是那仍然不在全班范圍內。

現場示例:

 class TestObject { constructor(initialNumber) { this.result = initialNumber; } add(number) { this.result += number; return this; } valueOf() { return this.result; } } const value = new TestObject(7) .add(2) .add(3); console.log(+value); 

發生這種情況是因為您從方法中返回了結果,所以該值將是一個對象{result:12} ,如果要查看執行並對其進行調試,請添加debugger; 對於您需要的任何線路,您都可以了解得到的結果;

    class TestObject {
      constructor(initialNumber) {
        this.result = initialNumber;
    }
      add(number) {
        this.result += number;
        debugger;
        return this;
      }
    }

    const value = new TestObject(7)
        .add(2)
        .add(3);
     debugger;
    console.log(value)

使用您編寫的代碼,如果更改Console.log(value.result) ,將獲得所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM