前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript之面向对象学九(原型式继承和寄生式继承)

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

作者头像
郑小超.
发布2018-01-24 15:28:17
5440
发布2018-01-24 15:28:17
举报
文章被收录于专栏:GreenLeavesGreenLeaves

一、原型式继承

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档