zoukankan      html  css  js  c++  java
  • js中的继承

    那对继承,我是这么看的。咱们这个继承一般是针对父方法和子方法来说的,也就是说有两个方法,一个父方法,一个子方法。子方法可以拥有父方法的所有属性以及函数,那对于我们来说,js中常用的继承有3种。

    第一种原型链继承:子对象他有一个默认属性是叫__proto__,他是指向这个方法本身,而方法本身他是不带父对象的方法或者属性的,所以他得调用他的prototype 的属性,这个prototype属性他又指向一个对象, 对象是子方法的原型,那么这个原型他又是用父方法实例化出来的,所以他又是他父对象的__proto__,这个__proto__又指向的父对象本身内个prototype,这个prototype 又调用他里面的 属性和方法,这样的话就是他的原型链继承。

    例如:

    function Parent(){

      this.name = 'mike';

      }

    function Child(){

      this.age = 12;

      }

    Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条

    obj.prototype == 对象.__proto__
    var p = new per();
    alert(p.__proto__==per.prototype) //true
    per.prototype.__proto__


    第二个叫构造函数继承, 构造函数继承最重要的一点就是冒充,父对象定义在子对象
    里面,在子对象里面可以引用父对象的属性和方法,构造函数继承我感觉比较简单。

    列如:

    function myFun(){
    this.name=
    this.age=
    this.show = function(){}

    }

    var obj1 = new myFun();
    var obj2 new myFun();


    再往后就是混合继承,那就是既有构造,又有原型,这样的一种继承方式。

    例如:

    function myFun(){
    this.name
    this.show=function(){alert(123)}
    }
    myFun.prototype.age=12
    myFun.prototype.info = function(){alert(456)}
    myFun.prototype={
    name:"zhangsan",
    age :18,
    show:function(){}
    }


    这就是我对继承看法。
    (call和apply之间的区别:两种方法虽然都是继承属性,但书写格式存在不同
    这里call方法是通过this 后跟着一个字符串系列
    而apply方法同样也是通过this 不过传属性则是由数组构成

    call(this,name,age,str,demo) 字符串序列
    apply(this,[name,age]) 数组

    ---恢复内容结束---

    ---恢复内容开始---

    那对继承,我是这么看的。咱们这个继承一般是针对父方法和子方法来说的,也就是说有两个方法,一个父方法,一个子方法。子方法可以拥有父方法的所有属性以及函数,那对于我们来说,js中常用的继承有3种。

    第一种原型链继承:子对象他有一个默认属性是叫__proto__,他是指向这个方法本身,而方法本身他是不带父对象的方法或者属性的,所以他得调用他的prototype 的属性,这个prototype属性他又指向一个对象, 对象是子方法的原型,那么这个原型他又是用父方法实例化出来的,所以他又是他父对象的__proto__,这个__proto__又指向的父对象本身内个prototype,这个prototype 又调用他里面的 属性和方法,这样的话就是他的原型链继承。

    例如:

    function Parent(){

      this.name = 'mike';

      }

    function Child(){

      this.age = 12;

      }

    Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条

    obj.prototype == 对象.__proto__
    var p = new per();
    alert(p.__proto__==per.prototype) //true
    per.prototype.__proto__


    第二个叫构造函数继承, 构造函数继承最重要的一点就是冒充,父对象定义在子对象
    里面,在子对象里面可以引用父对象的属性和方法,构造函数继承我感觉比较简单。

    列如:

    function myFun(){
    this.name=
    this.age=
    this.show = function(){}

    }

    var obj1 = new myFun();
    var obj2 new myFun();


    再往后就是混合继承,那就是既有构造,又有原型,这样的一种继承方式。

    例如:

    function myFun(){
    this.name
    this.show=function(){alert(123)}
    }
    myFun.prototype.age=12
    myFun.prototype.info = function(){alert(456)}
    myFun.prototype={
    name:"zhangsan",
    age :18,
    show:function(){}
    }


    这就是我对继承看法。
    (call和apply之间的区别:两种方法虽然都是继承属性,但书写格式存在不同
    这里call方法是通过this 后跟着一个字符串系列
    而apply方法同样也是通过this 不过传属性则是由数组构成

    call(this,name,age,str,demo) 字符串序列
    apply(this,[name,age]) 数组

  • 相关阅读:
    Tarjan之求LCA
    最近公共祖先(LCA)
    『Tarjan』Tarjan求强连通分量模板
    「LCA + 树上差分」[USACO15DEC]最大流Max Flow
    『主席树』可持久化线段树模板
    「树状数组」[SDOI2009]HH的项链
    「LCA」仓鼠找sugar
    「线段树」[JSOI2008]最大数
    「LCA + 最小生成树」货车运输
    『最小生成树』最小生成树模板
  • 原文地址:https://www.cnblogs.com/DongZixin/p/6986117.html
Copyright © 2011-2022 走看看