在Javascript中设置属性的默认值

时间:2017-03-14 22:18:31

标签: javascript oop default-value

如何为类的p1p2p3和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"}

但后者似乎不起作用......

2 个答案:

答案 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" });