Js 继承

javaScript 继承,我们也许要有好多方式,比如说原型链继承,构造继承,实例继承、组合继承、但是我们必须要理解的,继承的实质到底是什么,继承实质其实就是原型链之间转化,每个构造函数的声明,不可能总要开辟新的空间,因此我们都是在原型对象基础上做修改。下面这张图,我们能否理解:

简单截图

通过截图我们可以看出,构造函数通过prototype 指向原型对象,我们的实例化得到的函数指向了构造函数的prototype,这样也就是new 出来的函数指向了原型对象,所以所有的指向都会是原型对象。而作为原型对象,它通过constructor来区别谁引用了它。这就是一层原型链。

说了这么多都在介绍原型链,步入正题继承:第一种方式继承:

call继承

这中方式简单继承原型上基本值可以继承,但是在原型函数上的方法是不能继承的,那么如若只是使用prototype来改变原型对象,那么也会出现一个问题,我们每次新实例化出来的值都会被修改,因此合并两者修改成以下方式。

综合方式继承

这种方式来说会好好多,我们可以实现基本继承,又可以解决原型对象被修改,但是我们可以看出,这里其实可以将 new parents() 直接改成 parents.prototype,我们根据原型链指向,这时我们还有一个问题就是,我们实例化出来的child1 它的prototype 指向的并不是它自己而是 parents 的prototype,因此我们此时的修改就是使用Object.create(parents.prototype) 方式,此时的继承将会趋近完美。

此次的继承写得有些粗糙,如果有什么不对的地方,希望大家指出,欢迎评论。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、原型链 学过java的同学应该都知道,继承是java的重要特点之一,许多面向对象的语言都支持两种继承方式:接口...
    grain先森阅读 1,468评论 0 39
  • 继承的概念:子类可以使用父类共享的属性和方法,避免重复代码提高代码复用性。 原型链:子类可以共享父类的实例对象和实...
    浅秋_6672阅读 452评论 0 0
  • 开场白 大三下学期结束时候,一个人跑到帝都来参加各厂的面试,免不了的面试过程中经常被问到的问题就是JS中如何实现继...
    王猪猴阅读 1,194评论 0 11
  • 继承6种套餐 参照红皮书,JS继承一共6种 1.原型链继承 核心思想:子类的原型指向父类的一个实例 Son.pro...
    灯不梨喵阅读 3,250评论 1 2
  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,229评论 0 6

友情链接更多精彩内容