((javascript)使用“ call”调用es6 getter] >> [

问题描述 投票:0回答:1
我正在尝试创建一个(类)实例,该实例复制另一个类的行为,但将其自身用作状态上下文(此)。普通函数可以正常工作(类似于下面示例中的setValue函数),但吸气剂不起作用。这是一个简单的示例:

const should = require('chai').should(); class One { setValue(val) { this._val = val; } get val() { return this._val; } } class Two { constructor(one) { this.one = one; } setValue(val) { this.one.setValue.call(this, val); } get val() { this.one.val.call(this); } } let one = new One(); let two = new Two(one); one.setValue(1); two.setValue(2); one.val.should.equal(1); two.val.should.equal(2);

以上代码在错误的最后一行爆炸:

TypeError: this.one.val.call is not a function at Two.get val [as val] (C:\all\code\node-tests\invoke_getter.js:23:22) at Object.<anonymous> (C:\all\code\node-tests\invoke_getter.js:32:5)

我该如何进行类似的工作?

我正在尝试创建一个(类)实例,该实例复制另一个类的行为,但将其自身用作状态上下文(此)。普通函数可以正常工作(例如示例中的setValue函数...

javascript node.js ecmascript-6 es6-class
1个回答
0
投票
您将需要澄清您想要实现的目标。看起来您想要的是extend,但我不确定。但是从should语句判断,您似乎误解了对象引用的工作方式。
© www.soinside.com 2019 - 2024. All rights reserved.