search

Home  >  Q&A  >  body text

javascript - ES6中面向对象构造函数的参数写法

class Person{
  constructor(props){
      this.id  = props.id;
      this.name = props.name;
  }
}
class Student extends Person{
  constructor(props,props1){
     super(props);
     this.stuNum = props1.stuNum;
     this.stuNum1 = props1.stuNum1;
  }
}

和props改成id,name
props1改成stuNum,stuNum1

哪个设计方式更好呢

伊谢尔伦伊谢尔伦2828 days ago502

reply all(1)I'll reply

  • 大家讲道理

    大家讲道理2017-04-11 09:59:45

    class Person {
        constructor(id, name) {
        }
    }

    这种方式对构造函数的定义非常清晰,要求就是 idname。按这个思想定义 Student 会是这样:

    class Student extends Person {
        constructor(id, name, stuNum, stuNum1) {
        }
    }

    参数越来越多。由于 JavaScript 对参数没有强制要求(没有静态检查),所以参数越多,越容易出错。这种情况下可以针对 JavaScript 的动态特性来进行一点改革

    class Person {
        constructor(props) {
            this.id = props.id;
            this.name = props.name;
        }
    }
    
    class Student extends Person {
        constructor(props) {
            super(props);
            this.stuNum = props.stuNum;
            this.stuNum1 = props.stuNum1;
        }
    }

    参数简单了,现在还需要做的事情就是,写上注释,说明 props 应该包含些什么属性。

    reply
    0
  • Cancelreply