编程语言
首页 > 编程语言> > javascript-使用Class声明原型默认值的ecmascript 6语法

javascript-使用Class声明原型默认值的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"

如何使用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'

标签:ecmascript-6,javascript
来源: https://codeday.me/bug/20191119/2035308.html