前言
本文包含JavaScript高级大致内容(不全部包含ES6新语法),参考与pink老师所讲解视频通过自己理解整理,所以这是一篇用于小白新手入门,或者复习使用的笔记,ES6新语法以后也会更新。
如有做的不好的地方,敬请谅解,欢迎指出,持续更新改正
一 面向对象与类
1 面向对象
面向过程 (POP)
高性能 不易维护
面向对象 (OOP)
性能低 易维护 灵活特点:
- 封装
- 继承
- 多态
类和对象
对象抽象封装成一个类
类实例化获取类的对象
2 创建类与实例化
用class关键字创建类
class Star {
constructor(uname, age) {
//new生成实例时,constructor自动调用,不写自动生成
this.uname = uname;
this.age = age;
}
}
利用类创建对象
var ldh = new Star("刘德华", 20);
var zxy = new Star("张学友");
console.log(ldh);
类中添加方法
- 类里面函数不需要写function
- 多个方法间不需要逗号分隔
class Star {
constructor(uname, age) {
this.uname = uname;
this.age = age;
}
say(){
console.log('说')
}
}
var zxy = new Star("张学友");
zxy.say()
3 继承
(就近原则) 实例化输出方法,先在子类找,再到父类找
class Father {
constructor() {
}
money() {
console.log(100);
}
}
class Son extends Father {
}
var son = new Son();
son.money();
4 super关键字
super() 调用了父类中的构造函数
class Father {
constructor(x, y) {
this.x = x;
this.y = y;
}
sum() {
console.log(this.x + this.y);
}
}
class Son extends Father {
constructor(x, y) {
super(x, y); //调用了父类中的构造函数
}
}
var son = new Son(1, 2);
son.sum();
super关键字调用父类普通函数
class Father {
say() {
return "我是爸爸";
}
}
class Son extends Father {
say() {
console.log(super.say() + "的儿子");
}
}
var son = new Son();
son.say();
super必须放在子类this之前
class Father {
constructor(x, y) {
this.x = x;
this.y = y;
}
sum() {
console.log(this.x + this.y);
}
}
class Son extends Father {
constructor(x, y) {
super(x, y);
this.x = x;
this.y = y;
}
subtract() {
console.log(this.x - this.y);
}
}
var son = new Son(3, 1);
son