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();//cheng
p.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();//cheng
p.sayAge();//18
p.show();//show
console.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}