Skip to content

Latest commit

 

History

History
46 lines (39 loc) · 776 Bytes

classes2.md

File metadata and controls

46 lines (39 loc) · 776 Bytes

偏好组合而非继承

Bad logo

	class Employee {
	  constructor(name, email) {
	    this.name = name;
	    this.email = email;
	  }
	
	  // ...
	}
	
	class EmployeeTaxData extends Employee {
	  constructor(ssn, salary) {
	    super();
	    this.ssn = ssn;
	    this.salary = salary;
	  }
	
	  // ...
	}

Good logo

	class EmployeeTaxData {
	  constructor(ssn, salary) {
	    this.ssn = ssn;
	    this.salary = salary;
	  }
	
	  // ...
	}
	
	class Employee {
	  constructor(name, email) {
	    this.name = name;
	    this.email = email;
	  }
	
	  setTaxData(ssn, salary) {
	    this.taxData = new EmployeeTaxData(ssn, salary);
	  }
	  // ...
	}