2016-06-09 81 views

回答

3

这不是在构造函数创建一个实例属性,它是一个静态(类)属性,所以没有。它只会被创建一次 - 当对象文字被声明时 - 并被分配给类的构造函数。任何类的实例都可以访问,但不会创建副本。

要为类的每个实例创建一个对象,你可以进行复印或一个新的对象,并将其分配给一个属性上this

class Foo { 
    constructor(){ 
    this.modes = { 
     ModeA : 0, 
     ModeB : 1 
    } 
    } 
} 

要为类创建一个对象,你应该分配给构造函数,就像你现在正在做的那样。如果你看看Babel的静态方法输出,你可以看看它是如何工作的。该ES6代码:

class Foo { 
    static bar() { } 
    baz() { } 
} 

会产生ES5:分配给构造函数的原型将是实例“的一部分,”

var Foo = function() { 
    function Foo() { 
    _classCallCheck(this, Foo); 
    } 

    Foo.bar = function bar() {}; 

    Foo.prototype.baz = function baz() {}; 

    return Foo; 
}(); 

属性,而直接分配给构造属性将成为团队的一分子类。

+0

谢谢,这真是太棒了。对于使用'es2015'的静态函数,这也是如此吗? (只创建一次) – BarryBones41

+0

@ BarryBones41我添加了一些关于它如何工作的更多信息,其中包括es5输出以准确显示它的功能。 – ssube

相关问题