11.5--总结es6的类class

1.正式面向对象编程,但背后仍然是原型和构造函数的概念。
2.类的定义:
(1)类声明
class Person{}
(2)类表达式
const a = class Person{}
注:与函数表达式的相同点:类在被求值之前也不能引用。
不同点:函数声明可以提升,但类不能;
函数受函数作用域限制,而类受块作用域限制。
11.5--总结es6的类class
3.类的构成
类可以包含构造函数方法、实例方法、获取函数、设置函数和静态类方法。默认情况下,类在严格模式下执行。
(1)首字母要大写。
(2)类表达式的名称是可选的,在把类表达式赋值给变量后,可以通过 name 属性取得类表达式的名称字符串。
11.5--总结es6的类class
4.类构造函数。
constructor:在使用new操作符创建类的新实例时,应该调用这个函数。这个不是必须的。
(1)实例化
使用new操作符等同于调用类的构造函数。发生如下操作:(与创建对象使用构造函数模式一样)
(1) 在内存中创建一个新对象。
(2) 这个新对象内部的[[Prototype]]指针被赋值为构造函数的 prototype 属性。
(3) 构造函数内部的 this 被赋值为这个新对象(即 this 指向新对象)。
(4) 执行构造函数内部的代码(给新对象添加属性)。
(5) 如果构造函数返回非空对象,则返回该对象;否则,返回刚创建的新对象。
类构造函数和构造函数的主要区别是:调用类构造函数必须用class。不用会出错;而调用普通构造函数不使用new的,会以全局this作为内部对象。
(2)把类当成普通的构造函数。
也是函数,也有原型,都有prototype属性,而这个原型也有constructor指向类本身;
可用instanceof操作符:{
重点在于,类中定义的 constructor 方法不会被当成构造函数,在对它使用
instanceof 操作符时会返回 false。但是,如果在创建实例时直接将类构造函数当成普通构造函数 来使用,那么 instanceof 操作符的返回值会反转
}
11.5--总结es6的类class