码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-08 16:07:22      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

一、原型式继承

该继承模式是由道格拉斯*克罗克福德在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之面向对象学九(原型式继承和寄生式继承)

标签:

原文地址:http://www.cnblogs.com/GreenLeaves/p/5853147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!