zoukankan      html  css  js  c++  java
  • JavaScript之面向对象学九(原型式继承和寄生式继承)

    一、原型式继承

    该继承模式是由道格拉斯*克罗克福德在2006年提出的实现继承的方法.

    模式的基本思路:借助原型可以基于已有的对象创建新的对象,同时还不必因此创建自定义类型。

    代码如下:

    function object(o) {
        function F() { //定义一个F类型的对象
            this.name="111";
        }
        F.prototype=o;//使F的原型对象指向传入对象,也就是说F继承了传入的对象,也相当于用传入的对象重写了F的原型对象 相当于如下代码
    /*    F.prototype={
            name:"张三",
        friends:["李四","王五"]
        };*/
        return new F();//返回F对象  注意:此时的原型对象里有一个指向F构造函数的constructor所以这个对象既包括F原型对象也包括F构造函数里面的属性
    }
    var person={
        name:"张三",
        friends:["李四","王五"]
    };
    var person1=object(person);
        person1.name="Plugin";
        person1.friends.push("赵六");
    var person2=object(person);
        person2.name="Kobe";
        person2.friends.push("Durrant");
        alert(person1.friends); //输出:李四,王五,赵六,Durrant


    这种继承模式和原型构造函数模式类似,只不过在这里F构造函数作为一个基础对象,他的原型对象是根据传入的对象,动态变化的!所以根据这个特点,通过更改传入对象的属性值,而省去了创建构造函数的步骤,所以当我们没有必要兴师动众的创建构造函数,只想让一个对象与另一个对象保持类似的情况下,原型继承是完全可以胜任的!

  • 相关阅读:
    Spark之 SparkSql整合hive
    Spark之 使用SparkSql操作Hive的Scala程序实现
    Spark之 RDD转换成DataFrame的Scala实现
    Spark之 SparkSql、DataFrame、DataSet介绍
    Spark之 RDD
    Spark scala和java的api使用
    设计模式之四观察者模式
    设计模式之三静态代理模式
    设计模式之二装饰者模式
    设计思想之二面向接口编程
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5853147.html
Copyright © 2011-2022 走看看