首页 > js实现继承的最佳方式是什么

js实现继承的最佳方式是什么

其它语言里用extends即可,但是js貌似没有原生的解决方案,导致很多框架都自己实现了一套extends方法。目前看到比较多的就是把父类的方法再拷贝(或者引用?)到子类中,这种做法效率高吗?业内的通行做法是?


看我的文章:JavaScript继承方式详解
没那么麻烦,实现继承都是通过原型链,最佳的是组合继承


《JavaScript 权威指南》第六版里面第九章 Classes and Modules 的 9.3 Java-Style Classes in JavaScript,
看完你就懂了。


没有规范的原因大概是我们要的东西不一样!我觉得是这样我就这样写,他觉得那样好就那样写。大家都在写适合自己的继承实现,下面的可以说是最基本的也是效率最高的继承。

    if (typeof Object.create === 'function') {
      module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        ctor.prototype = Object.create(superCtor.prototype, {
          constructor: {
            value: ctor,
            enumerable: false,
            writable: true,
            configurable: true
          }
        });
      };
    } else {
      // old school shim for old browsers
      module.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor
        var TempCtor = function () {}
        TempCtor.prototype = superCtor.prototype
        ctor.prototype = new TempCtor()
        ctor.prototype.constructor = ctor
      }
    }

简而言之,传统的面向对象要素:

详见 JavaScript 权威指南

【热门文章】
【热门文章】