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

  • 相关阅读:
    Java性能总结一(转)
    Java性能总结三(转)
    Java性能总结二(转)
    Jsp设计第三版文摘
    java配置错误记录
    PatternsInJava文摘
    Java性能总结四(转)
    Spring+Struts+Hibernate 简介(转)
    baidu c++吧上的一道题
    IT公司笔试题总结(三)
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5853147.html
Copyright © 2011-2022 走看看