两种JS原型继承方法的比较与介绍
在实际的项目中,我们通常使用构造函数来创建一个对象,然后将一些常用的方法添加到它们的原型对象中。最后,要么直接实例化对象,要么使用它作为父对象,然后声明一个对象并继承父对象。有两种常见的继承方法,今天我们将做一个小讨论。
复制代码代码如下所示:
父类
功能人(名称){
this.name =名称;
};
子类
函数学生(性别){
person.apply(这个参数); / /继承父类的构造函数
这是性=性;
};
1,继承原型:
复制代码代码如下所示:
student.prototype = person.prototype; / /在这句话的执行,student.prototype.constructor指人,为什么因为person.prototype.constructor点人,对象的分配本质上是一个参考的任务,所以Student.prototype.constructor也指出,人
student.prototype.constructor =学生; / / student.prototype.constructor人回来
人的原型对象被学生的原型对象所覆盖。在这之前,该对象的分配本质上是一个参考的任务,所以Student.prototype的任何修改都将反映在person.prototype,即子类对父类。
看下面:
复制代码代码如下所示:
学生。原型;
person.prototype.add(添加); / /流行
2,继承的例子:
复制代码代码如下所示:
student.prototype =新的(人); / /如果参数不合格,不能写()是新的人直接写;
2 student.prototype.constructor =学生;
原型对象使用的人支付学生的例子;实例被创建,而不是在显示前是浪费内存,但它也是一种方法来解决上述的缺点,即在student.prototype任何修改不会反映到person.prototype,不会影响到父类的子类。
3,使用控制对象结合1和2的优点,消除缺点。
复制代码代码如下所示:
Var(f =函数){ };
f.prototype = person.prototype;
student.prototype =新的f();
student.prototype.constructor =学生;
f是一个只有一些原型的空对象,实例化时内存较少,除了子类对父类的影响。