最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

类拒绝继承值

运维笔记admin15浏览0评论

类拒绝继承值

类拒绝继承值

我正在尝试加载XObject(extends Object)类,但是当我尝试记录它的值时,它简单地出现为XObject {},即使在util.inspected时也是如此。

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 {}"
回答如下:

更新(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 }
  }
}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论