如何为类的p1
,p2
,p3
和p4`属性设置默认值:
class O extends AnotherClass {
constructor(p1,p2,p3,p4) {
super(); \\ for the this-reference
if (p1) this.p1 = p1;
if (p2) this.p2 = p2;
if (p3) this.p3 = p3;
if (p4) this.p3 = p4;
}
我必须一个一个地写
O.prototype.p1 = "default1"
O.prototype.p2 = "default2"
O.prototype.p3 = "default3"
O.prototype.p4 = "default4"
还是有更优雅的方式,比如
O.prototype = {p1: "default1", p2 : "default1", p3 : "default3", p4 : "default4"}
但后者似乎不起作用......
答案 0 :(得分:5)
在构造函数中声明params时,可以在es6中设置默认属性,如draw(Canvas c)
答案 1 :(得分:0)
除了@Fried_Chicken已经回答的普通ES2015 +默认参数值之外,还有另一种方法。
为什么不接受作为对象的参数,然后使用ES2015 +解构功能?这是一个很好的选择,因为您可以按任何顺序提供整个参数,甚至只提供其中一个或一些。
此外,您不需要为某些给定参数提供null
/ undefined
:
doStuff(1, null, null, 2);
请参阅以下可运行的代码段并使用它。可以在您的场景中应用相同的解决方案,因为可以在类构造函数上使用解构。
function doStuff({ arg0 = null, arg1 = null } = {}) {
if (arg0 !== null) {
console.log(arg0);
} else {
console.log("not provided");
}
}
doStuff();
doStuff({ arg0: "hello world" });