//创建一个类--------------- functioncreator(data){ //使用构造函数创建一个模板 this.name = data.name this.age = data.age this.weight = data.weight } creator.prototype.infor = function(){ //将共用属性和方法挂载到构造函数的原型上 console.log(`My name is ${this.name},I'm ${this.age} years old.`) } //创建一个子类----------------- functionstudent(data){ //用creator类创建一个子类 //用call方法将creator的指向改为student,这样参数就能挂载到student的属性上,实现属性继承 creator.call(this,data) this.id = data.id//student类特有的属性 this.idinfor = function(){ console.log(`My ID is ${this.id}`) } } student.prototype = newcreator({}) //继承方法 //继承方法不要用student.prototype = creator.prototype,因为一旦前者改动,会影响后者的prototype
//数据--------------- let data1 = { name: 'Mike', age: 16, weight: 70 } let data2 = { name: 'Tom', age: 22, weight: 60 } let data3 = { name: 'Maria', age: 18, weight: 50, id: 1145 } let mike = newcreator(data1) //创建一个对象实例 let tom = newcreator(data2) //创建另一个对象实例 let maria = newstudent(data3) //创建student实例 //测试----------------- mike.infor() tom.infor() maria.infor() maria.idinfor() //结果 //My name is Mike,I'm 16 years old. //My name is Tom,I'm 22 years old. //My name is Maria,I'm 18 years old. //My ID is 1145
//创建一个父类-------- classPerson{ //class name{} 整个类的内容都包括在里面 constructor(name,age){ //属性的定义可以直接在里面写构造函数 this.name = name this.age = age } infor(){ //类的方法可以直接卸载class里面 console.log(`My name is ${this.name},I'm ${this.age} years old.`) } } //创建一个子类----------- classStudentextendsPerson{ //extends可以继承方法,相当于将prototype挂到父类的实例上 constructor(name,age,id,grade){ super(name,age) //super() 可以快捷的将属性继承 this.id = id this.grade = grade } stu_infor(str = 'Hllo.'){ console.log(str,`My Id is ${this.id},my grade is ${this.grade}`) } } //创建实例--------- let person = newPerson('Mike',18) let student = newStudent('Maria',17,11455,4) //测试---------- person.infor() student.infor() student.stu_infor('你好啊') //结果 //My name is Mike,I'm 18 years old. //My name is Maria,I'm 17 years old. //你好啊 My Id is 11455,my grade is 4