class类

es5造类

function Person(name,age) {
    this.name = name;
    this.age = age;
}
Person.prototype.sayName = function() {
    return this.name;
}
let p1 = new Person('小马哥',28);
console.log(p1.sayName());	//小马哥
console.log(p1);	//Person {name: "小马哥", age: 28}

es6

class Person {
// 实例化的时候会立即被调用
constructor(name, age) {
	this.name = name;
	this.age = age;
}
sayName(){
	return this.name	
}
// console.log(p1.sayName());
}
let p1 = new Person('小马哥', 28);
console.log(p1.sayName());	//小马哥
console.log(p1);	//Person {name: "小马哥", age: 28}

通过Object.assign()方法一次性向类中添加多个方法

class Person {
  // 实例化的时候会立即被调用
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  sayName() {
    return this.name
  }
}
Object.assign(Person.prototype, {
  sayName() {
    return this.name
  },
  sayAge() {
    return this.age
  }
})
let p1 = new Person('小马哥', 28);
console.log(p1.sayName());  //小马哥
console.log(p1.sayAge()); //28
console.log(p1);  //Person {name: "小马哥", age: 28}

使用关键字 extends 实现继承

 //父类
class Animal{
    constructor(name,age) {
        this.name = name;
        this.age = age;
    }
    sayName(){
        return this.name;
    }
    sayAge(){
        return this.age;
    }
}

//子类
class Dog extends Animal{
    constructor(name,age,color) {
        //super 超类,自动调用父类中的constructor()
        super(name,age);
        this.color = color;
    }
    // 子类自己的方法
    sayColor(){
        return `${this.name}是${this.age}岁了,它的颜色是${this.color}`
    }
    // 重写父类的方法
    sayName(){
        return this.name + super.sayAge() + this.color;
    }
}
let d1 = new Dog('小黄',28,'red');
console.log(d1.sayColor());
console.log(d1.sayName());
//调用父类中的方法
console.log(d1.sayAge());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值