Leo*_*ves 15 javascript ecmascript-6 babeljs
是否可以创建一个ES6类,如果它没有在新方法中传递,则为属性分配默认值?
class myClass {
constructor(options) {
this.a = typeof options.a !== 'undefined' ? options.a : 'default a value';
this.b = typeof options.b !== 'undefined' ? options.b : 'default b value';
this.c = typeof options.c !== 'undefined' ? options.c : 'default c value';
}
}
var myClassWithValue = new myClass({a:'a value', b: 'b value'});
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用此代码执行此操作,使用babeljs进行编译,则会出现TypeError:无法设置未定义的属性"c".
也许我没有得到javascript中的类如何工作.
Jar*_*a X 21
如果您打算使用ES6,为什么不使用所有ES6,即参数和解构赋值的默认值
class myClass {
constructor({a = 'default a value', b = 'default b value', c = 'default c value'} = {a:'default option a', b:'default option b', c:'default option c'}) {
this.a = a;
this.b = b;
this.c = c;
}
}
var v = new myClass({a:'a value', b: 'b value'});
console.log(v.toSource());
var w = new myClass();
console.log(w.toSource());
Run Code Online (Sandbox Code Playgroud)
http://www.es6fiddle.net/ibxq6qcx/
编辑:还测试并确认在https://babeljs.io/repl/上运行
ale*_*eha 14
Object.assign也适用于我
class RenderProperties {
constructor(options = {}){
Object.assign(this, {
fill : false,
fillStyle : 'rgba(0, 255, 0, 0.5)',
lineWidth : 1,
strokeStyle : '#00FF00'
}, options);
}
}
Run Code Online (Sandbox Code Playgroud)
我建议如下:
class myClass {
constructor(options) {
const defaults = {
a: 'default a value',
b: 'default b value',
c: 'default c value'
};
const populated = Object.assign(defaults, options);
for (const key in populated) {
if (populated.hasOwnProperty(key)) {
this[key] = populated[key];
}
}
}
}
var myClassWithValue = new myClass({a:'a value', b: 'b value'});
Run Code Online (Sandbox Code Playgroud)
如果没有参数通过构造函数,它会被分配一个默认值,因为它是预先设置的,我希望我有帮助!
class User {
constructor(fullName = "fooName", lastName, canAccess = false) {
this.fullName = fullName;
this.lastName = lastName;
this.canAccess = canAccess;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想有一些属性默认但有些不是,你也可以使用扩展运算符(与 Object.assign 答案相同)
const defaults = {someDefault: true};
class SomeClass {
constructor(config) {
this.config = {...defaults, ...config};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24036 次 |
| 最近记录: |