[英]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.