es6类并添加一个显式原型以跨类实例共享

时间:2017-03-08 20:39:17

标签: javascript ecmascript-6 es6-class

所以,我有一个班级:

class XYZ {
    constructor(name) {
        if (!new.target) new XYZ(name);
        this.name = name;
    }

    run() {

    }

    walk() {

    }

   addShoe() {
       // I want to add a shoe here IF it hasn't already been 
       // added, by    any other instance
   }
}

现在,我需要所有实例共享一个变量,即:SHOES。

我想要做到这一点的唯一方法,有两种方法是在类外添加变量(模块顶部)或将其放在原型上。 即

我尝试过添加静态变量,但没有工作。当然我可以使用set / get,但是再次 - 这是一种仍然需要“访问/更新”“共享变量资源”的方法。

let SHOES = new Set();
//or
XYZ.prototype.SHOES =  new Set();
class XYZ {
    constructor(name) {
        if (!new.target) new XYZ(name);
        this.name = name;
    }

    run() {

    }

    walk() {

    }
}

有更直观的方法吗?当然,这是一个非常简化的版本 - 但试图采用es6'做事的方式'。

我结束了下面的事情。但它似乎仍然是错误的。你的想法?

XYZ.SHOES =  new Set();

我相信我也尝试了以下内容并且无法正常工作:

class XYZ {
   constructor() {
     static SHOES =  new Set(); // <-- didn't work
     this.constructor.SHOES =  new Set(); // <-- didn't work

   }
}

XYZ.SHOES =  new Set(); // <- worked
let SHOES =  new Set(); // <-- worked

当然,在模块中声明一个全局工作并且仅仅分配给该类工作,但这些似乎很脏。有关更简洁方法的任何想法吗?

0 个答案:

没有答案