Javascript ecmascript 6使用类声明原型默认值的语法

Javascript ecmascript 6使用类声明原型默认值的语法,javascript,ecmascript-6,Javascript,Ecmascript 6,在javascript中创建类时,可以通过访问函数的原型来设置默认值 function Foo() { } Foo.prototype.get = function() { return this._value; } Foo.prototype._value = 'foo value'; var foo = new Foo(); console.log(foo.get()); // logs "foo value" 如何使

在javascript中创建类时,可以通过访问函数的
原型
来设置默认值

    function Foo() {
    }
    Foo.prototype.get = function() {
        return this._value;
    }
    Foo.prototype._value = 'foo value';
    var foo = new Foo();
    console.log(foo.get()); // logs "foo value"
如何使用ecmascript 6
实现类似效果

    // this doesn't work
    class Bar {
        get() {
            return this._value;
        }
        // how to declare following default value properly?
        _value: "bar value"
    }
    var bar = new Bar();
    console.log(bar.get()); // logs undefined

语法只允许您定义方法,但它仍然只使用
.prototype
对象创建构造函数。您可以完全按照ES5中的设置默认值:

// this does work
class Bar {
    get() {
        return this._value;
    }
}
Bar.prototype._value = 'foo value';
var bar = new Bar();
console.log(bar.get()); // logs 'foo value'
当然,您可能只想创建并初始化一个实例属性:

// this does work
class Bar {
    constructor() {
        this._value = 'foo value';
    }
    get() {
        return this._value;
    }
}
var bar = new Bar();
console.log(bar.get()); // logs 'foo value'

ES6没有类的属性声明,只有方法。这是对ES7的一个建议:@TbWill4321:但是它们不会创建原型属性