ecmascript 6语法,用于使用类

时间:2015-12-09 17:51:41

标签: javascript ecmascript-6

在javascript中创建类时,您可以通过访问函数prototype来设置默认值。

    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 class实现类似的效果?

    // 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

1 个答案:

答案 0 :(得分:3)

class语法只允许您定义方法,但它仍然只是创建一个带有.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'