首页 > Web开发 > 详细

关于阮一峰js继承文章阅读笔记

时间:2019-07-08 18:53:50      阅读:92      评论:0      收藏:0      [点我收藏+]

一、js继承分类

  1、构造函数继承(call/apply)

  2、prototype原型链继承

  3、非构造函数继承

二、构造函数继承(call和apply的区别在于,传入参数的形式不同)

  1、代码实例

//构造函数的继承
function Parent(name){
    this.name = name;
    this.action = function(){
        console.log(this.name)
    }
}
function Child(name){
    Parent.call(this,name)
}
var obj = new Child("tom")
obj.action()

  2、优点

  (1)避免引用类型数据共享

  (2)创建子类的时候可以向父类传参

  3、缺点

  (1)方法都在构造函数中定义,每次创建实例都会创建一遍方法。

三、prototype原型链继承(1、子类的原型 = 父类的实例2、子类的原型 = 父类的原型)

  1、代码示例

//原型链继承之子类原型 = 父类实例
function Parent(name){
    this.name = name
    this.action = function(){
        console.log(this.name)
    }
}
Parent.prototype.say =function(){
    console.log("hello")
}
function Child(name){
}
Child.prototype = new Parent("jiangqi")
var obj = new Child()
obj.action()
//原型链继承之子类原型 = 父类原型
function Parent(name,say){
    this.name = name
    this.say = function(){
        console.log("hello")
    } 
}
Parent.prototype.see = function(){
    console.log("see")
}
function Child(){

}
Child.prototype = Parent.prototype
Child.prototype.constructor = Child;
var obj = new Child("jiangqi")
obj.see()

 

第一种可以继承父类构造函数的各个属性和方法,但要new一个子类实例;第二种不用执行和建立父类的实例,节省空间;缺点是 Cat.prototype和Animal.prototype现在指向了同一个对象,那么任何对子类prototype的修改,都会反映到父类的prototype。

 

附上链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html

    

 

  

关于阮一峰js继承文章阅读笔记

原文:https://www.cnblogs.com/helloNico/p/11153022.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!