【发布时间】:2019-11-04 11:10:23
【问题描述】:
让我们这样说:
var method = function(number) {
this.number = number;
this.add = function(param) {
this.number = this.number + param;
return this
}
this.multiply = function(param) {
this.number = this.number * param;
return this.number
}
}
如果我这样做:
var newMeth = new method(2);
var result = newMeth.add(2).multiply(2);
console.log(result) // Will return 8
但我主要关心的是我是否想这样做:
var newMeth = new method(2);
var result = newMeth.add(2);
我想知道在这种情况下怎么可能会产生这样的结果 返回“4”而不是
method {number: 4, add: ƒ, multiply: ƒ}
但如果我这样做了,仍然返回 8
var result = newMeth.add(2).multiply(2);
任何帮助将不胜感激。谢谢大家。
【问题讨论】:
-
您不能直接执行此操作。我认为您无法说服
console.log使用任何特定值来表示您的对象。最有可能的是,在一般情况下这是不可能的,因为console.log严重依赖于实现。但是,您可以在对象上使用返回值的方法 - 例如new method(2).add(2).multiply(7).getValue()。如果您将方法命名为valueOf,那么它将在转换为原始方法时被调用,因此您可以使用new method(2).add(2).multiply(7) + 5并从操作中得到一个纯数字。
标签: javascript oop methods