js三种继承

大家好,js继承是js中比较重要的的一部分,这篇文章来介绍js中的继承。

常用的三种继承

  • 构造函数继承
  • call & apply 继承
  • prototype继承

js继承有挺多变种,常用就这三种

讲继承前,先讲讲new实例化过程中,在内存中的三个阶段

new实例化,在内存中的三个阶段

// 实例化
function Foo(){}
var _f = new Foo();
// 内存中三个阶段
// 1)创建对象
    var _f = {};
// 2)更改 __proto__指向
    _f.__proto__ = Foo.prototype;
// 3)更改this指向
    Foo.call(_f);

这是内存中实例化的三个阶段,除了第一步创建对象,咱们可以看出,实例化对象,本质上还是在操作prototypethis

理解了内存的三个阶段,就能很好理解继承了,

继承本质上也是在操作prototypethis

js继承简单总结

function Axx( ){ this.a = 1; }
Axx.prototype.foo = function (){ };

//   1、原型继承 ( prototype继承的核心,就是原型链 )
   Bxx.prototype = new Axx();

//    2、构造函数继承 - 在子类函数中用一个属性指向父类 这样就继承了原型上方法
    function Children() {
       this.obj = ParentFn; // 这样继承了ParentFn 原形上方法 (注意不能加括号,那是把父类执行结果给子类了)
        this.obj(); // 这样继承了ParentFn this上方法
   }


//   3、call和apply继承
   function Bxx(){
       Axx.call(this);
    }

   new Bxx(); // 这样就继承了

上面就是简单实现继承了,是不是很简单呢😄!

原型链我上一篇文章讲了,这里就不在赘述;原型链看这

再来总结下,js继承的核心,

就是this指向的改变,扩展了子类的this指向,使之包含了父类的this

继承总结

就两点,继承prototype原型上共有方法 和this上私有方法,搞清楚了这点,学习继承就不难了,

基本理论也说完了,之后我看出几篇prototype和继承的实际应用,继承的简单原理就说到这里了,有啥错漏的欢迎评论指出,共同学习

21 声望
0 粉丝
0 条评论
推荐阅读
原生js实现类jq框架
前言 今天来实现一个简单的js框架,类似jq的功能,实现了增减class,增减属性,链式调用,合并对象等功能, 更加深入理解下js原型prototype的应用,是之前承诺的原型模式应用的文章,欢迎评论交流 初始化方法 {代...

yuanfa247阅读 1.4k

从零搭建 Node.js 企业级 Web 服务器(零):静态服务
过去 5 年,我前后在菜鸟网络和蚂蚁金服做开发工作,一方面支撑业务团队开发各类业务系统,另一方面在自己的技术团队做基础技术建设。期间借着 Node.js 的锋芒做了不少 Web 系统,有的至今生气蓬勃、有的早已夭折...

乌柏木143阅读 12k评论 10

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木60阅读 6k评论 16

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs39阅读 6.2k评论 12

封面图
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木41阅读 7.2k评论 6

CSS 绘制一只思否猫
欢迎关注我的公众号:前端侦探练习 CSS 有一个比较有趣的方式,就是发挥想象,绘制各式各样的图案,比如来绘制一只思否猫?思否猫,SegmentFault 思否的吉祥物,是一只独一无二、特立独行、热爱自由的(>^ω^&lt...

XboxYan42阅读 2.8k评论 14

封面图
还在用 JS 做节流吗?CSS 也可以防止按钮重复点击
举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库

XboxYan34阅读 2.3k评论 2

封面图
21 声望
0 粉丝
宣传栏