类的本质
console.log(typeof Star); //function
构造函数+原型实现面向对象编程
(1)构造函数有原型对象 prototype (2)构造函数原型对象 prototype 里面有 constructor 指向构造函数本身 (3)构造函数可以通过原型对象添加方法 (4)构造函数创建的实例对象有__proto__原型指向构造函数的原型对象
ES6 通过类实现面向对象编程
- 类的本质就是函数,可以简单地认为,类就是构造函数的另一种写法。
- 类有原型对象 prototype
- 类原型对象 prototype 里面有 constructor 指向类本身
- 类可以通过原型对象添加方法
- 类创建的实例对象有__proto__原型指向类的原型对象: 实例对象.__proto__ === 类.prototype
所以 ES6 的类的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
所以 ES6 的类其实就是语法糖.
语法糖:语法糖就是一种便捷写法.简单理解,有两种方法可以实现同样的功能,但是一种写法更加清晰、方便,那么这个方法就是语法糖