面向对象

实现继承的方式

  1. 原型继承

子构造函数.prototype = 父实例 (Child.prototype = new Father();)

function Father(){
    this.a = [1, 2, 3]
}
Father.prototype.aFun = function(){
    console.log('a')
}

function Child() {
    this.name = 'bb'
}
Child.prototype = new Father();
Child.prototype.bFun = function() {
    conosle.log('b')
}

var child1 = new Child();
child1.aFun();  //a
child1.a;

缺点:

  • 定义在父构造函数内的属性,每个父实例都会有各种的一份实例属性。子构造函数的原型是父构造函数的一个实例,每个子实例共享相同的原型上的属性。
  • 无法从子构造函数向父构造函数传递参数
  1. 构造函数继承
function Father(name){
    this.a = [1, 2, 3];
    this.name = name;
}

function Child() {
    Father.call(this, 'qi')
    this.value = 'bb'
}

var child1 = new Child();

缺点: 无法共享原型对象上的方法

  1. 通过构造函数继承属性,通过原型链继承方法(应用广泛)
function Father(name){
    this.a = [1, 2, 3];
    this.name = name;
}
Father.prototype.aFun = function(){
    console.log('a')
}

function Child() {
    Father.call(this, 'qi')
    this.value = 'bb'
}
Child.prototype = new Father();
Child.prototype.constructor = Child;
Child.prototype.bFun = function() {
    conosle.log('b')
}

var child1 = new Child();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,416评论 0 6
  • 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。ECMAScr...
    DHFE阅读 4,562评论 0 4
  • JavaScript面向对象程序设计 本文会碰到的知识点:原型、原型链、函数对象、普通对象、继承 读完本文,可以学...
    moyi_gg阅读 4,093评论 0 2
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,276评论 3 12
  • 魂梦白云苍狗,朝暮痴心空守。 诗酒释愁难,又见佳人眉皱。 白首,白首,怎续断桥伽逅?
    忘了宠爱阅读 968评论 0 3