es5的办法
最简略的类
function Person() { this.name = 'zy' this.age = 27 this.run = function () { console.log( `${this.name} is run`) // zy is run } } let person = new Person() person.sex = 'female' console.log('person.name', person.name) // zy console.log('person.sex', person.sex) // female
原型链外面减少属性和办法
Person.prototype.grade = '一年级' Person.prototype.work = function () { console.log( `${this.name} is work`) // zy is work } console.log('person.grade', person.grade) // 一年级 person.work()
增加静态方法
Person.getInfo = function () { console.log('person.getInfo') // person.getInfo } Person.getInfo()
继承
1. 对象假冒继承形式,只能继承【构造函数】里的属性和办法 function Web () { Person.call(this) // } let web = new Web() console.log('Web.name', web.name) // zy console.log('Web.grade', web.grade) // undefined2. 原型链继承形式,能继承【构造函数】和【原型链】上的属性和办法 不能传参调用 function Web () { } Web.prototype = new Person() let web = new Web() console.log('Web.name', web.name) // zy console.log('Web.grade', web.grade) // 一年级3. 对象假冒 + 原型链继承形式 function Person(name, age) { this.name = name this.age = age this.run = function () { console.log( `${this.name} is run`) // zy is run } } function Web(name, age) { Person.call(this, name, age) // 继承构造函数的属性和办法 } Web.prototype = Person.prototype // 继承原型链的属性和办法 let web = new Web('zy', 27) web.run()
es6的办法
最根底的类
class Person { name: string; // 属性,后面省略了public关键字 constructor (n:string) { // 构造函数,实例化类的时候触发的函数 this.name = n } run ():void { console.log(`${this.name} is run`) // zy is run }} let person = new Person('zy')person.run()
继承
class Person { name: string; // 属性,后面省略了public关键字 constructor (name:string) { // 构造函数,实例化类的时候触发的函数 this.name = name } run ():void { console.log(`${this.name} is run`) // ying is run }} class Web extends Person{ constructor (name:string) { super(name) // 初始化父类的构造函数 }}let web = new Web('ying')web.run()
类外面的修饰符
public 私有 在类外面、子类、类里面都能够拜访
protected 爱护类型 在类外面、子类外面能够拜访,在类内部没法拜访
privated 公有 在类外面能够拜访 子类、类里面不能够拜访