zoukankan      html  css  js  c++  java
  • javascript:继承

      继承是面向对象的基本特征,其目的就是复用(无论是代码还是内存),其基本特征就是父类的方法与子类继承的方法为同一个方法

    导航

    原生的继承的方式-->模式下的继承方式-->瞎bb

    原生的继承的方式

      大神Brendan Eich设计脚本语言javascript时,认为他是一种简单的脚本语言,吸收了面向对象的方式,但没有引用类的概念(都类了,能简单吗),至于继承的概念,则通过万能的"分层"思想进行处理

    1.如何创建对象

      Java语言都使用new命令来生成实例。javascript吸收了new命令,以此从原型对象中创建新的实例,但Javascript没有"类",怎么来表示原型对象呢?大神很机智的发现,java使用new命令后跟的都是类的构造函数,因此javascript拥有构造函数却没有类的概念,而一个非常简单的设计方式就出来了

    function Dog(name){
      this.name= name;
    }

    这是一个构造函数,对构造函数使用new就可以创建一个对象,而构造函数中的this则代表其自身,就这么简单

    2.对象的继承

    创建出来的实例对象自然应该是独立,且分开的,但对于公共部分,共享才是唯一的出路,经典的分层思想就在这里,只要将共享的部分提出来,所有的实例化对象在指向共享引用就可以了,此时大神加入了prototype属性

    function Dog(name){
      this.name= name;
    }
    Dog.prototype.species="犬科";

    prototype指向的就是公共部分,Person中的this,表示的是实例中的对象,至此,javascript中的继承就已经完整的设计好了

    模式下的继承方式

    只要知道构造函数与prototype属性就已经掌握了javascript中的继承原理,不过这原理好像是创建原型以后,在创建父类的引用,缺少类概念的javascript又该如何让两个对象进行关联呢?

    function Dog(name){
      this.name= name;
    }
    function Animal(species){
        this.species=species;//"动物种类"
    }
    Animal.prototype.getSpecies=function(){
        return this.species;
    }

    大神只设计了加减法,至于乘除就没有做太深的设计,需要开发人员进行简单的配合,当然我们的目的很明确,要让子类的prototype指向父类,如果可以的话需要一种不修改2个对象的方式

    函数绑定

    类似于super的方式

    function Dog(name){
         Animal.apply(this, "犬科");
      this.name= name;
    }

    1.修改了Dog的内部对象

    prototype

    强势修改

    Dog.prototype = new Dog();    
    Dog.prototype.constructor =Dog;
  • 相关阅读:
    总结在Visual Studio Code创建Node.js+Express+handlebars项目
    【转】nodeJs学习之项目结构
    jquery新版本旧版本之间的坑
    bootstrap使用中遇到的坑
    dataTables基础函数变量
    tabales1.10版参数详解
    【转】自定义(滑动条)input[type="range"]样式
    dataTables工作总结
    转载---SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程
    MVC模式下的跨域问题
  • 原文地址:https://www.cnblogs.com/liuCy/p/4231956.html
Copyright © 2011-2022 走看看