在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
答案 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'