美文网首页
JS继承的方法

JS继承的方法

作者: Nelson_sylar | 来源:发表于2019-01-02 10:28 被阅读0次

继承的作用

  • 继承通常的作用是用过使用继承从而得到代码的复用.

js中new的作用

举个例子,var a=new Human()

  1. 产生一个空对象a
  2. 使this=这个空对象
  3. this.__proto__=Human.prototype
  4. 执行Human.call(this,x,y,z.....)
  5. return this

使用prototype的两种继承方法

  1. 使用es5,用prototype实现继承
 function Human(name){
     this.name = name  //this为生成的实例对象
 }
 Human.prototype.run = function(){  //写Human的prototype
     console.log("我叫"+this.name+",我在跑")
     return undefined  //return undefined
 }
 function Man(name){
     Human.call(this, name)
     this.gender = '男'
 }
//-----------------------------方法一-------------------------------------------------
//由JS中new的作用得到只要不让其执行第4步就可以得到结果
 var f = function(){}//生成一个空函数
 f.prototype = Human.prototype//让空函数的prtotype指向Human的prototype对应的地址
 Man.prototype = new f()//这里f里没有函数,所以不会执行内部函数,
 
//-------------------------------------------------------------------------------

 Man.prototype.fight = function(){
     console.log('糊你熊脸')
}

//------------------------------方法二-------------------------------------------------
//Man.__proto__.prototype=Human.prototype        IE不支持
//-------------------------------------------------------------------------------
var obj=new Man('Lee')
  1. 使用es6,使用关键字class,实际上内部还是在执行上述方法,js中没有类的概念.
 class Human{
     constructor(name){
         this.name = name
     }
     run(){
         console.log("我叫"+this.name+",我在跑")
         return undefined
     }
 }
 class Man extends Human{
     constructor(name){
         super(name)  //使用关键字super
         this.gender = '男'
     }
     fight(){
         console.log('糊你熊脸')
     }
     get age(){//声明变量
          return '20'
    }
 }
  • 两者区别:
    相同点: 都能完成继承实际上都是用的prototype,因为js中没有类.
    不同点: 使用prototype能更好理解js中继承的实质,即用改写原型链的方式来复用代码.当声明原型的变量时
    直接写xx.prototype.yy=zz,而class要写成类似函数的方式get yy(){return zz}.另外前者使用ES5语法,后者使用ES6语法,在考虑简便性时考虑后者,在考虑兼容性问题时,优先使用前者.

相关文章

  • [读] JS中的call()和apply()方法

    JS中的call()和apply()方法 实现继承 多重继承

  • 我碰到的前端面试题(js)

    1.js实现继承有哪几种方法? 方法一:原型链继承 方法二: 构造函数继承 方法三: 组合继承 2.this指向问...

  • JS里的继承

    什么是继承继承的原理如何完成JS的继承? 什么是继承 继承就是子类拥有父类的各种属性和方法那什么是类?这里的JS的...

  • js 继承方法

    Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的proto。如果完全重写了pr...

  • JS继承的方法

    JS继承的方法有六种: 1、原型链继承 2、构造继承 3、实例继承 4、拷贝继承 5、组合继承 6、寄生组合继承

  • JS继承的方法

    继承的作用 继承通常的作用是用过使用继承从而得到代码的复用. js中new的作用 举个例子,var a=new H...

  • js一些技巧.md

    js中的constructor和prototype 组合继承与寄生继承 组合继承 可以继承实例属性和方法,也可以继...

  • 浅析JS继承方法

    JS 实现继承的方法有:1.原型链继承2.构造函数继承3.组合继承(原型链继承 + 构造函数继承)4.原型式继承(...

  • js 原型继承方法

    if(typeof Object.create !== 'function') {Object.create = ...

  • js中方法继承

    call 和 apply JS中的call()和apply()方法

网友评论

      本文标题:JS继承的方法

      本文链接:https://www.haomeiwen.com/subject/xmbalqtx.html