美文网首页
面向对象(继承)

面向对象(继承)

作者: divine_zhouo | 来源:发表于2017-10-12 19:47 被阅读0次

1:借用构造函数

function Parent(){
    this.name = "Parent"
}
Parent.prototype.say = function(){}
function Child(){
    Parent.call(this)
    this.type= "Child"
}
console.log(new Child())

注意:

this代表:如果Child函数作为普通函数使用,为window。如果是作为构造函数(new child()),为new的是咧

缺点:

只能继承父类自己的属性,父类原型上的属性不能继承,如Parent.prototype.say = function(){},newChild实例就无法继承

2:借助原型链

 function Parent(){
    this.name = "Parent"
    this.Arr = [1,2,3]
}
function Child(){
    this.type= "Child"
}
Child.prototype = new Parent()

优点:

解决了借用构造函数的缺点问题,可以继承父类原型上的属性

缺点:

var child1 = new Child()
var child2 = new Child()
child1.Arr.push(4)
这时child2.Arr也变成了[1,2,3,4]
因为它们的原型指向是一样

3:组合方式继承(即1和2的组合)

  function Parent(){
    this.name = "Parent"
    this.Arr = [1,2,3]
}
function Child(){
    Parent.call(this)
    this.type= "Child"
}
Child.prototype = new Parent()
var child1= new Child()

缺点:

执行new Child()时执行了两遍父类new Parent()和Parent.call(this)两处
可以将Child.prototype = new Parent()改为Child.prototype = Parent.prototype
但这样的话,Child的实例的constructor就指向了Parent而不是Child
因为我们把 Parent.prototype赋值给了Child.prototype
所以最终优化为:Child.prototype = Object.create(Parent.prototype)

相关文章

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • Python面向对象继承

    面向对象继承 面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • 面对对象高级编程

    面向对象高级编程: 面向对象编程:封装、继承和多态 面向对象高级编程:多重继承、定制类和元类

  • Web前端经典面试试题及答案2

    javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。在JavaScript中实现继承...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • js面向对象设计

    面向对象模式 继承

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

网友评论

      本文标题:面向对象(继承)

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