初始化一个空的 ES6 class
Initializing an empty ES6 class
我正在构建一个应用程序,我有一个视图,它是一个 class,它需要一堆属性来显示、创建、更新等。
我这样设置视图
export default class {
constructor(view) {
this.id = view.id;
this.title = view.title;
}
}
我希望能够在创建新视图时初始化一个View
,我认为正确的方法是这样的
let newView = new View()
不幸的是,如果我这样做,似乎没有调用构造函数。当我运行这个测试
expect(newView.id).toBe(undefined)
我收到一个错误 cannot read property id of undefined
。
let newView = new View({})
Returns 正确,但我觉得提供一个空对象有点奇怪。这个对吗?有没有更好的方法来实例化一个空的 class?
这是正确的。
正在调用您的构造函数,但它是用参数定义的。在您的第一次调用中,您传递了空对象:
let newView = new View();
异常:
export default class {
constructor(view) { //view = 'undefined'
this.id = view.id; //This line will cause exception.
this.title = view.title;
}
}
因此构造函数中的参数 'view' 将未定义,您将得到异常。
当你打电话时:
let newView = new View({}); // new object {}
您的参数 'view' 将被定义,您可以访问它的道具。 (当然它们都会为空)
补充:
不幸的是,构造函数没有重载,它们仍然像普通的 JS 函数一样工作,你可以做一个解决方法:
export default class {
constructor(view) {
view = view || {}; //this is default value for param.
this.id = view.id;
this.title = view.title;
}
}
那么你就涵盖了 new View() 和 new View({object})
您可以使用默认参数将 view
对象设置为默认变量标识符 view
,属性 id
,title
设置为 undefined
class View {
constructor(view = {id: void 0, title: void 0}) {
this.id = view.id;
this.title = view.title;
}
}
var newView = new View();
console.assert(newView.id === undefined
, {"message":"newView.id is not undefined"
, "newView.id":newView.id}
);
console.assert(newView.id !== undefined
, {"message":"newView.id is undefined"
, "newView.id":newView.id}
);
console.dir(newView);
我正在构建一个应用程序,我有一个视图,它是一个 class,它需要一堆属性来显示、创建、更新等。
我这样设置视图
export default class {
constructor(view) {
this.id = view.id;
this.title = view.title;
}
}
我希望能够在创建新视图时初始化一个View
,我认为正确的方法是这样的
let newView = new View()
不幸的是,如果我这样做,似乎没有调用构造函数。当我运行这个测试
expect(newView.id).toBe(undefined)
我收到一个错误 cannot read property id of undefined
。
let newView = new View({})
Returns 正确,但我觉得提供一个空对象有点奇怪。这个对吗?有没有更好的方法来实例化一个空的 class?
这是正确的。
正在调用您的构造函数,但它是用参数定义的。在您的第一次调用中,您传递了空对象:
let newView = new View();
异常:
export default class {
constructor(view) { //view = 'undefined'
this.id = view.id; //This line will cause exception.
this.title = view.title;
}
}
因此构造函数中的参数 'view' 将未定义,您将得到异常。
当你打电话时:
let newView = new View({}); // new object {}
您的参数 'view' 将被定义,您可以访问它的道具。 (当然它们都会为空)
补充: 不幸的是,构造函数没有重载,它们仍然像普通的 JS 函数一样工作,你可以做一个解决方法:
export default class {
constructor(view) {
view = view || {}; //this is default value for param.
this.id = view.id;
this.title = view.title;
}
}
那么你就涵盖了 new View() 和 new View({object})
您可以使用默认参数将 view
对象设置为默认变量标识符 view
,属性 id
,title
设置为 undefined
class View {
constructor(view = {id: void 0, title: void 0}) {
this.id = view.id;
this.title = view.title;
}
}
var newView = new View();
console.assert(newView.id === undefined
, {"message":"newView.id is not undefined"
, "newView.id":newView.id}
);
console.assert(newView.id !== undefined
, {"message":"newView.id is undefined"
, "newView.id":newView.id}
);
console.dir(newView);