首页 > 代码库 > JavaScript之面向对象学九(原型式继承和寄生式继承)
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之面向对象学九(原型式继承和寄生式继承)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。