JavaScript之面向对象学九(原型式继承和寄生式继承)

Posted Green.Leaf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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构造函数作为一个基础对象,他的原型对象是根据传入的对象,动态变化的!所以根据这个特点,通过更改传入对象的属性值,而省去了创建构造函数的步骤,所以当我们没有必要兴师动众的创建构造函数,只想让一个对象与另一个对象保持类似的情况下,原型继承是完全可以胜任的!

以上是关于JavaScript之面向对象学九(原型式继承和寄生式继承)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript面向对象

JavaScript继承基础讲解,原型链借用构造函数混合模式原型式继承寄生式继承寄生组合式继承

JavaScript之原型式继承&寄生式继承和寄生组合式继承以及优缺点

javascript中类式继承和原型式继承的实现方法和区别

javascript-面向对象之继承

JavaScript对象原型链继承闭包