美文网首页
JS中的继承

JS中的继承

作者: 饕餮潴 | 来源:发表于2019-03-26 16:02 被阅读0次

js并不是想java一样面向对象,而是基于对象,所以js是通过prototype的原型链继承

prototype

function Human(name){
  this.name=name
}
Human.prototype.run=function(){
  console.log("我叫“+this.name+",我在跑")
  return undefined
}
function Man(name){
  Human.call(this.name)
  this.gender='男'
}
var f=funticon(){
f.prototype=Human.prototype
Man.prototype=new f()

Man.prototype.fight=function(){
  console.log('啪啪打脸')
}

class 语法糖 (es6)

class Human{
    construction(name){
        this,name=name
    }
    run(){
          console.log("我叫“+this.name+",我在跑")
          return undefined
          }
  }
class Man extends Human{
  construction(name){
      super(name)
    this.gender='男'
   }
  fight(){
        console.log('啪啪打脸')
  }
}

原型链继承

优点:

  • 非常简便的实现了多重继承的关系;
  • 能够确定原型和实例之间的关系;

缺点:

  • 创建子类型实例时,无法向父类型传递参数,尤其是多重继承时,弊端非常明显;
  • 所有的实例会共享通过原型链继承的属性,在一个实例中改变了,会在另一个实例中反映出来;
  • 不能使用字面量添加新方法,会使继承关系中断(会重写constructor属性);

借用构造函数实现继承

优点:

  • 可以通过使用call可以在调用的时候向父类型传递参数。

缺点:

  • 仅仅借用构造函数,方法都在构造函数中定义,就无法实现函数复用;
  • 通过借用构造函数,在父类型原型中定义的方法也无法通过原型链暴露给子类型;

相关文章

  • JS继承

    JS中的继承 许多OO语言都支持两种继承方式:接口继承和实现继承; 因为JS中没有类和接口的概念 , 所以JS不支...

  • JS中基于原型实现继承

    本文不会对于JS中的继承机制进行深入研究,只聊js中基于原型实现继承的方式,如果需要了解JS中的继承机制及其相关背...

  • 2019-03-25 继承

    js中通过原型来实现继承 组合继承:原型继承+借用构造函数继承

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

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

  • JS中的继承

    1. prototype实现继承 由于IE不支持Man.prototype.proto=Human.prototy...

  • js中的继承

    方式一、原型链继承 分析: 这种方式实现的本质是通过将子类的原型指向了父类的实例,子类的实例就可以通过proto访...

  • js中的继承

    要使一个子类继承父类,需要两步实现:第一:继承父类自身的属性和方法第二:继承父类原型上的方法 "父类自身"属性和方...

  • js 中的继承

    在了解了js 中的原型链之后 (https://www.jianshu.com/p/1e683a9771c3),我...

  • JS中的继承

    JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。当然Jav...

  • JS中的继承

    以下内容总结自《js高级程序设计 第三版》 在许多面向对象的语言中,都支持接口继承和实现继承。 接口继承:只继承方...

网友评论

      本文标题:JS中的继承

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