# 类
> 类(class)本质上是 es5 构造函数的另一种写法. </br>
> </br>
> **注意:** </br>
> 1.class 定义的对象,不用 **new 关键字**声明是无法运行的,和函数加 () 是有些区别的.
> 2.class 不存在变量提升.
> 3.class 内部使用的是严格模式.
```javascript
//es5
var Monkey = function(name, age) {
this.name = name;
this.age = age;
this.lol = function() {
console.log("i'm laughing~");
};
};
var monkey1 = new Monkey('neer', 2);
monkey1.lol();
console.log("i'm" + monkey1.name + ', ' + monkey1.age + 'years old');
//es6
class Monkey {
constructor(name, age) {
this.name = name;
this.age = age;
}
lol() {
console.log("i'm laughing~");
}
}
let monkey1 = new Monkey('neer', 2);
monkey1.lol();
console.log(`i'm ${monkey1.name}, ${monkey1.age} years old`);
//子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
// 类的继承
class Person {
constructor(name, gender) {
this.name = name;
this.gender = gender;
}
introduction() {
console.log(`my name is ${this.name} and i'm a ${this.gender}`);
}
}
class Son extends Person {
constructor(name, gender, age) {
super(name, gender);
this.age = age;
}
call() {
console.log(
`i'm ${this.name}'s son, my father is ${this.gender},i was ${
this.age
} years old `
);
}
}
```
- 01.let-const
- 02.对象数组解构&赋值
- 03.字符串扩展,数值扩展,数组扩展
- 04.数组扩展
- 05.对象扩展
- 06.06.Symbol原始数据类型
- 07.set数据结构
- 08.map数据结构
- 09.proxy与Reflect
- 10.类
- 11.Promise
- 12.Iterator(迭代器)
- 13.Generator(生成器)
- 14.module与模块化
- 15.es6学习总结
- 记录- Vue拖拽实例
- 记录-git使用天坑之分支切换
- node -- session & cookie & localStorge
- 18.12关于前端战略技术储备与问题反馈
- Vue组件通信方式总结以及遇到的问题
- 01.版本回溯以及文件修改
- 02.远端控制
- 03.分支管理
- node 入门 留言板
- nodejs模块与 commonjs 规范
- 19年技术发展规划
- JS错误处理 -> 提升程序健壮性
- Git 基本使用
- 18年年终总结