构造函数和类的区别
使用构造方法创建对象虽然很简单、方便,但是与类存在一定的区别。类中的成员方法是定义在类中的,使用类创建对象后,这些对象的方法都是引用了同一个方法,这样可以节省内存空间。示例代码如下。
1 class Person {
2 sing() {
3 console.log('hello');
4 }
5 }
6 var p1 = new Person();
7 var p2 = new Person();
8 console.log(p1.sing === p2.sing); // 输出结果:true
从上述代码可以看出,p1的sing()方法和p2的sing()方法是同一个方法。
使用构造函数创建的对象并不是引用同一个方法,示例代码如下。
1 function Student() {
2 this.sing = function() {
3 console.log('hello');
4 };
5 }
6 var s1 = new Student();
7 var s2 = new Student();
8 console.log(s1.sing === s2.sing); // 输出结果:false
为了解决上述问题,就需要利用原型对象来实现。在下一个小节中我们将对原型对象进行详细讲解。