类拒绝继承值

时间:2017-09-21 01:56:23

标签: javascript node.js class

我正在尝试加载XObject(extends Object)类,但是当我尝试记录其值时,它只会出现XObject {},即使在util.inspect时也是如此。

xobject.js

class XObject extends Object {
  constructor(opts) {
    super(opts);
  }

...

}

的application.js

this.xobj = new XObject({ option1: "A", option2: "B" });
logger.debug(`XObject created`, `values = ${require("util").inspect(this.xobj)}`); // prints "DEBUG • XObject instantiated • values = XObject {}"

1 个答案:

答案 0 :(得分:0)

更新(2019年2月):我将此提交为v8错误。 Chromium上的Neis表示这种行为是有意的;请参阅此处的讨论:v8 issue #8817

我最终找到了解决这个问题的方法。虽然Jeff M在评论中表示这可能是一个V8错误,但它实际上是根据ECMAScript规范行事。

主要变化是我不再延长Object

这是我已经落实的概念:(代码被严格删除和简化)

let inherit = { foo: "bar", baz: 4 };

class TestClass {
  constructor() {
    this.test = "thing";
    // this = TestClass {
    //          test: "thing" }

    Object.assign(this, inherit);
    // this = TestClass { 
    //          test: "thing",
    //          foo: "bar",
    //          baz: 4 }
  }
}