类式继承与原型继承之间的性能差异与原型链结构区别

这篇讨论下类式继承与原型继承之间的性能差异与原型链结构区别

我们先开始讨论原型链结构区别,在前面的两个章节里面,分别层现了类式继承与原型继承的实现方式。接下来我利用前面2个章节的代码来声明2个对象。

原型继承:

   var p1 clone(Person);
   var p2 clone(Person);

类式继承: 

var a1 = new Author(21, "asd");
var a2 = new Author(22, "dsa");

接下来我们用chrome来看下 a1与p1的结构图

 如a1(类式继承)中,它拥有2个的__proto__ 而p1就一个。在链式的查找中无疑p1的搜索来的更快速。

在类式继承中我们看到这句话

1 subClass.prototype = new f();

在原型继承中

1 f.prototype = object;

他们都使用了prototype来继承,但是类式继承中,每一次的继承都是一个新生成的实例对象,而实例继承中每次都直接使用一个对象字面量。

类式继承subclass.prototype=[new subclass()].__proto__=[new f()].__proto__=f.prototype

原型继承f.prototype=[new f()].__proto__=object

所以不管是在空间上还是在属性搜索上,原型继承都优于类式继承。但是使用哪一种方式取决于具体业务。比较特别的一点是程序员大多钟情于类式继承。



原文地址:https://www.cnblogs.com/qiutiantian/p/3186465.html