美文网首页
面向对象(八)继承___ 02原型式继承

面向对象(八)继承___ 02原型式继承

作者: 凸小布 | 来源:发表于2017-02-25 17:07 被阅读32次

title: 面向对象(八)继承___ 02原型式继承 # 文章页面上的显示名
date: # 文章生成时间,一般不改
categories: # 文章分类目录,可省略
- 面向对象
tags: # 文章标签,可省略
- 面向对象
- 基于原型面向对象的继承 # 个数不限,单个可直接跟在 tags 后面


  • 原型式继承原理

    原理:利用构造函数的原型对象上面的属性和方法可以被构造函数创建出来的对象所拥有

  • 原型式继承的实现方式【3】

  • A · 利用对象的动态特性添加属性

  • B · 替换(字面量的方式)原型对象

  • C · B.prototype = A.prototype;
    ** B.prototype = A.prototype; 存在的问题:**
    001 构造器属性指向(默认指向的是父构造函数)
    002 无法获得实例属性和方法,只能继承(获得)父构造函数原型对象的属性和方法


A · 利用对象的动态特性添加属性

<script>
    function A(){}
    A.prototype.name = "默认的名称";

    var a1 = new A();
    var a2 = new A();

    console.log(a1.name);
    console.log(a2.name);
</script>

B · 替换(字面量的方式)原型对象

<script>
    function A(){}
    A.prototype = {
        name : "默认名称",
        constructor : A
    }

    var a1 = new A();
    var a2 = new A();

    console.log(a1.name);
    console.log(a2.name);
</script>

C · B.prototype = A.prototype;

<script>
    function A(){
        this.name = "默认的名称",
        this.age = 30
    }
    function B(){}

    A.prototype.des = "描述信息-A";
    // 设置B的原型对象
    B.prototype = A.prototype;
    // 修正构造器属性
    B.prototype.constructor = B;

    var b1 = new B();
    var b2 = new B();

    console.log(b1.des);
    console.log(b2.des);

    console.log(b1.constructor); //function B(){}
    console.log(b2.constructor); //function B(){}

    console.log(b1.name); //undefined

    var a1 = new A();
    console.log(a1.constructor); //function B(){}
    console.log(a1.name);

</script>
B.prototype = A.prototype 内存结构图

** B.prototype = A.prototype; 存在的问题:**
001 构造器属性指向(默认指向的是父构造函数)
002 无法获得实例属性和方法,只能继承(获得)父构造函数原型对象的属性和方法

相关文章

  • 面向对象(八)继承___ 02原型式继承

    title: 面向对象(八)继承___ 02原型式继承 # 文章页面上的显示名date: # 文章...

  • js的继承

    面向对象的继承方式有很多种,原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生式组合继承、深拷贝...

  • 学习JavaScript设计模式——面向对象(三)

    面向对象(三) 继承 3. 原型式继承——洁净的继承者 借助原型prototype可以根据已有的对象创建一个新的对...

  • JavaScript 面向对象编程

    对象的创建 继承 原型式继承: 原型式继承,其本质是执行对给定对象的浅复制。原型链:{currentObject}...

  • js 继承

    4种继承方式 原型式继承给原型对象添加属性原型替换子类的原型对象替换为父类的原型对象 原型链继承 借用构造函数继承...

  • JavaScript之面向对象编程

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

  • 面向对象02 继承

    3.继承 3.1 原型链 原型链是实现继承的主要方法。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和...

  • js面向对象之 继承

    继承的几种实现方案: 01属性拷贝(浅拷贝) 02原型式继承 03原型链继承 04借用构造函数 05组合继承 06...

  • 关于继承

    继承的实现方法 属性拷贝 浅拷贝 深拷贝 原型继承 原型式继承 原型链继承 组合继承(深拷贝+优化后的原型式继承)...

  • 面向对象(八)继承___ 03原型链继承

    title: 面向对象(八)继承___ 03原型链继承 # 文章页面上的显示名date: # 文章...

网友评论

      本文标题:面向对象(八)继承___ 02原型式继承

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