JavaScript 继承---原型式继承

继承---原型式继承


原型式继承并没有使用严格意义上的构造函数,是通过借助原型基于已有的对象创建新对象,同时还不必创建自定义类型。


使用原型式继承的主要思路如例1所示:


例1:

function Object(o){
function F(){}
F.prototype=o;
return new F();
}

将例1进行分析可知:在Object函数的内部先创建了一个临时性的构造函数,然后将传入的对象作为这个构造函数的原型,最


后返回了这个临时类型的一个新实例。 结合例1,并在其下方添加如下代码1:


代码1:

var person={
name:"Tom",
friends:["111","222","333"]
}


var anotherPerson=object(person);
anotherPerson.name="Greg";
anotherPerson.friends.push("aaa");


var yetAnotherPerson=object(person);
yetAnotherPerson.name="Bob";
yetAnotherPerson.friends.push("000");


alert(person.friends); //111,222,333,aaa,000


克洛克福德主张这种原型式继承,要求你必须有一个对象可以作为另一个对象的基础。在代码1中,可以作为另一个对象


的基础的是person对象,于是我们可以把它传入到object()函数中,然后该函数就会返回一个新对象,这个新对象是将person


作为原型。所以它的原型中就包含一个基本类型值属性和一个引用类型值属性。即是在person中,person.friends还会被


anotherPerson和yetAnotherPerson共享。该方法相当于创建了两个person对象的副本。



ECMAScript5新增Object.create( )方法规范了原型式继承。该方法接收了两个参数:一个用作新对象原型的对象和(可选)一个


为新对象定义额外属性的对象。在传入一个参数的情况下,Object.create( )和object( )方法的行为相同。如果传入两个参数,则


Object.create( )的第二个参数与Object.defineProperties( )方法的第二个参数的格式相同:每个属性都是通过自己的描述符定义的。


以该方法指定的任何属性都会覆盖原型对象上的同名属性。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值