传统的javascript中只有对象,没有类。它是基于原型的面向对象语言。原型对象特点就是将自身的属性共享给新的对象。
如果要生成一个对象实例,就需要先定义一个构造函数,然后通过new操作符来完成。
构造函数示例:
构造函数生成实例的执行过程:
1.当使用了构造函数,并且 new 构造函数(), 后台会隐式执行new Object()创建对象;
2.将构造函数的作用域给新对象,(即new Object()创建出的对象),而函数体内的this就代表 new Object() 出来的对象。
3.执行构造函数的代码。
4.返回新对象(后台直接返回);
ES6引入了Class (类),通过class关键字可以定义类。
应该注意的项:
1.在类中声明方法的时候,不能给该方法加上function关键字
2.方法之间不要用逗号分隔,否则会报错
类实质上就是一个函数。类自身指向的就是构造函数。ES6中的类其实就是构造函数的另外一种写法!
类的所有方法都定义在类的 prototype 属性上。
例:
也可以通过prototype属性对类添加方法。如下:
可以通过Object.assign方法来为对象动态增加方法
constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。
类的所有实例共享一个原型对象,它们的原型都是Person.prototype,所以__proto__属性是相等的。
class不存在变量提升,所以需要先定义再使用。