13-1class创建类的基本结构
/* constructor函数---构造一个对象的函数特点:1.不允许以字面量的形式去原型对象上添加属性*/class Person{constructor(name,age){this.name=name;this.age=age;}sayName(){console.log(this.name);}}Person.prototype.sayAge=function(){console.log(this.age);}//不允许在原型上以字面量的形式去添加属性// Person.prototype={// show(){// console.log("show");// }// }var p=new Person("cheng",18)p.sayName();//chengp.sayAge();//18// p.show();//报错
13-2object-assign在原型上添加多个属性(不会改变构造属性)
class Person{constructor(name,age){this.name=name;this.age=age;}sayName(){console.log(this.name);}}Object.assign(Person.prototype,{sayAge(){console.log(this.age);},show(){console.log("show");}})var p=new Person("cheng",18);p.sayName();//chengp.sayAge();//18p.show();//showconsole.log(p.constructor==Person);//true
13-3私有属性
写在constructor函数外部的属性,相当于在constructor函数内部添加 this.skill=skill;默认还是私有属性
class Person{skill="js"; //相当于在constructor函数内部添加 this.skill=skill;默认还是私有属性constructor(name,age){this.name=name;this.age=age;// this.skill=skill;}sayName(){console.log(this.name);}}var p=new Person("cheng",18);console.log(p);//Person {skill: "js", name: "cheng", age: 18}
