13-1class创建类的基本结构

  1. /* constructor函数---构造一个对象的函数
  2. 特点:1.不允许以字面量的形式去原型对象上添加属性
  3. */
  4. class Person{
  5. constructor(name,age){
  6. this.name=name;
  7. this.age=age;
  8. }
  9. sayName(){
  10. console.log(this.name);
  11. }
  12. }
  13. Person.prototype.sayAge=function(){
  14. console.log(this.age);
  15. }
  16. //不允许在原型上以字面量的形式去添加属性
  17. // Person.prototype={
  18. // show(){
  19. // console.log("show");
  20. // }
  21. // }
  22. var p=new Person("cheng",18)
  23. p.sayName();//cheng
  24. p.sayAge();//18
  25. // p.show();//报错

13-2object-assign在原型上添加多个属性(不会改变构造属性)

  1. class Person{
  2. constructor(name,age){
  3. this.name=name;
  4. this.age=age;
  5. }
  6. sayName(){
  7. console.log(this.name);
  8. }
  9. }
  10. Object.assign(Person.prototype,{
  11. sayAge(){
  12. console.log(this.age);
  13. },
  14. show(){
  15. console.log("show");
  16. }
  17. })
  18. var p=new Person("cheng",18);
  19. p.sayName();//cheng
  20. p.sayAge();//18
  21. p.show();//show
  22. console.log(p.constructor==Person);//true

13-3私有属性

写在constructor函数外部的属性,相当于在constructor函数内部添加 this.skill=skill;默认还是私有属性

  1. class Person{
  2. skill="js"; //相当于在constructor函数内部添加 this.skill=skill;默认还是私有属性
  3. constructor(name,age){
  4. this.name=name;
  5. this.age=age;
  6. // this.skill=skill;
  7. }
  8. sayName(){
  9. console.log(this.name);
  10. }
  11. }
  12. var p=new Person("cheng",18);
  13. console.log(p);//Person {skill: "js", name: "cheng", age: 18}