javascript - 使用 Javascript 进行方法链接 - 加减问题
问题描述
我遇到了一个代码挑战,它使用方法链接创建了一个加减函数。plus(3).minus(2).value()
我已经创建了如下代码,但是当涉及到输出渲染和minus(3).minus(3).value()
调用方法时,它最终失败了
代码如下
function plus(valuez)
{
this.valuez = this.valuez+ valuez;
function value{
return valuez
}
plus.minus = minus;
plus.value = value;
plus.plus = this;
return this;
}
function minus(valuez)
{
this.valuez = this.v+ valuez;
function value(){
return valuez
}
minus.plus = plus;
minus.minus = this
minus.value = value;
return this;
}
预期的输出是 1 和 6,但我只得到最后输入的打印数字。我该如何解决这个问题?
解决方案
class Box {
constructor(v) { this._value = v }
plus(v) { this._value += v; return this; }
minus(v) { this._value -= v; return this; }
value() { return this._value; }
}
function plus(v) { return new Box(v) }
function minus(v) { return new Box(-v) }
console.log("plus(3).minus(2).value()", plus(3).minus(2).value());
console.log("minus(3).minus(3).value()", minus(3).minus(3).value());
function plus (x) { return { _value: x, plus(y){ return plus(this._value+y) }, minus(y){ return plus(this._value-y) }, value(){ return this._value } } }
function minus(x) { return plus(-x) }
console.log("plus(3).minus(2).value()", plus(3).minus(2).value());
console.log("minus(3).minus(3).value()", minus(3).minus(3).value());
使用闭包
function plus (x) { return { plus(y){ return plus(x+y) }, minus(y){ return plus(x-y) }, value(){ return x } } }
function minus(x) { return plus(-x) }
console.log("plus(3).minus(2).value()", plus(3).minus(2).value());
console.log("minus(3).minus(3).value()", minus(3).minus(3).value());
推荐阅读
- c - C 中无法解释的溢出
- sql - 如何在 SQL 中实现双向排序?
- python - 满足条件后如何向多个客户端发送响应?
- silverstripe - Silverstripe - 全新安装无安装页面
- java - Android java - 为 2 个或更多视图分页器制作 1 个 ImageAdapter(目前为 2 个视图分页器提供 2 个适配器)
- r - Windows 上 R 中并行计算的输出
- java - 通过 ModelMapper 映射时将 LocalDateTime.now() 的值设置为两个字段
- r - 如何将数据框随机拆分为在主题和项目上平衡的两半
- dns - 无法 ping 桉树云中的 DNS 服务器
- python - 用双轴在两点之间画线