1.继承内置类
定义类的时候,如果没有实现继承,默认继承自Object类
class Person {}
相当于下面
class Person extends Object {}
//继承内置类
class HYArray extends Array {
firstItem() {
return this[0];
}
lastItem() {
return this[this.length - 1];
}
}
const arr = new HYArray(1, 2, 3);
console.log(arr.firstItem()); //1
console.log(arr.lastItem()); //3
3.js中的多态

面向对象的三大特性:封装,继承,多态
多态:不同的数据类型,进行同一个操作,表现出不同的不同的行为,就是多态的体现
//传统面向对象的多态有三个前提:
// 必须有继承(多态的前提),必须有重写(子类重写父类方法),必须有父类引用指向子类对象
class Shape {
getArea() {
console.log("获取shape面积");
}
}
class Rectangle extends Shape {
getArea() {
return 100;
}
}
class Circle extends Shape {
getArea() {
return 1000;
}
}
function calcArea(shape: Shape) {
console.log(shape.getArea());
}
const r = new Rectangle();
const ss = new Circle();
calcArea(r); // 100
calcArea(ss); // 1000
export {}
下面依然是多态的体现
var obj = {
getArea() {
console.log(200);
},
};
class Person {
getArea() {
return 100;
}
}
const p = new Person();
function calcArea(o) {
console.log(o.getArea());
}
calcArea(obj)
calcArea(p)
function sum(a,b) {
return a + b
}
sum(1,2)
sum('1', '2')
网友评论