es5class

基本类

function Person(){
    // 属性
    this.name = 'zhangsan'
    this.age = 20
    // 实例方法
    this.run = () => {
        console.log( this.name + '在运动' )
    }
}

let p = new Person()
console.log(p)

构造函数和原型链中增加方法

类的静态方法

function Person(){
    this.name = 'zhangsan'
    this.age = 20

    this.run = () => {
        console.log( this.name + '在运动' )
    }
}

// 原型链上面的属性会被多个实例共享   构造函数不会
Person.prototype.work = function() {
    console.log( this.name + '在工作' )
}

// 静态方法定义
Person.getInfo = function(){
    console.log('静态方法getInfo')
}

let p1 = new Person()
p1.run()
p1.work()
// 调用静态方法
Person.getInfo()

继承

  1. 对象冒充继承
    缺点: 无法继承原型链上的属性和方法
function Person(){
    this.name = 'zhangsan'
    this.age = 20
}
Person.prototype.work = function() {
    console.log( this.name + '在工作' )
}

    
// 子类
function Web(){
    Person.call(this) //对象冒充实现继承
}
let w1 = new Web()
console.log(w1.name)
w1.work()
  1. 原型链继承
    缺点: 实例化子类的时候没法给父类传参
function Person(name, age){
    this.name = name
    this.age = age
}
Person.prototype.work = function() {
    console.log( this.name + '在工作' )
}

    
// 子类
function Web(){
}

Web.prototype = new Person() //原型链实现继承

let p1 = new Person('zhangsan', 30)
console.log(p1.name)
p1.work()

let w1 = new Web()
console.log(w1.name)
w1.work()
  1. 对象冒充+原型链组合继承
function Person(name, age){
    this.name = name
    this.age = age
}
Person.prototype.work = function() {
    console.log( this.name + '在工作' )
}


// 子类
function Web(name, age){
    Person.call(this, name, age)
}

Web.prototype = Person.prototype //原型链实现继承

let p1 = new Person('zhangsan', 30)
console.log(p1.name)
p1.work()

let w1 = new Web('lisi', 50)
console.log(w1.name)
w1.work()
console.log(p1, w1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值