JS继承

面向对象:

  私有属性、私有方法、特权方法、静态方法、静态属性、公共属性、公共方法、继承、闭包

闭包:有权访问 另一个函数作用域中的变量 的函数

    因为链式作用域问题,父级可以访问子级方法内部的变量,

    将子级函数作为返回值

 

继承:

  类式继承:

       父类的实例赋值给子类的原型。

       实例化父类,同时创建了父类原型,将子类原型指向声明的父类,此时子类原型可以访问父类以及父类原型。

       构造函数继承:

       在子类的构造函数作用域中执行父类的构造函数

       子类中声明添加此句 Parent.call(this,params);

  组合是继承:

       类式继承+构造函数式继承

                         还是经典的call来调用父类构造函数,将父类重新执行一遍,类似于刷新一遍,这样多个子类实例之间不受引用类型的影响。

  原型式继承:子类声明接收父类的类F,将F的原型指向进来的父类,return new F();

        将父类在子类中封装返回。

        

复制代码
<script type="text/javascript">
    function inheritObject(o)
    {
        function F(){};
        F.prototype = o;
        return new F();
    }


    var book =
        {
            name: "js book",
            alikeBook: ["css", "book", "html"]
        };
    var newbook = inheritObject(book);
    newbook.name = "newbook";
    newbook.alikeBook.push("newbook book");

    var obook = inheritObject(book);
    obook.name = "obook";
    obook.alikeBook.push("obook book");

    console.log(newbook.name);
    console.log(newbook.alikeBook);

    console.log(obook.name);
    console.log(obook.alikeBook);
  

    console.log(book.name);
    console.log(book.alikeBook);


</script>
View Code
复制代码

  寄生式继承:是对原型式继承的封装

  寄生组合式继承:写到这,我突然发现,ES6 对继承已经做了封装,思想共统一。

       

       

 

posted @   K战神  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2016-01-08 设计模式(六):状态模式
点击右上角即可分享
微信分享提示