我是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
。有什么方法可以通过仅在类主体中进行更改b来解决此问题?
答案 0 :(得分:0)
由于您的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);
答案 1 :(得分:0)
...仅通过在类正文中进行更改 ?
不。您还必须更改其外部的内容,因为您的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);
答案 2 :(得分:0)
之所以发生这种情况,是因为您从方法中返回了结果,因此该值将是一个对象 {result:12} 。如果要查看执行并进行调试,请添加{{1 }}到您需要的任何行,您都可以了解得到的内容;
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)
,将获得所需的结果。