原型式继承

原型式继承是道格拉斯·克罗克福德在 2006年写了一篇文章,题为 Prototypal Inheritance in JavaScript (JavaScript 中的原型式继承)中指出的。他给出了一下函数

function object(o){
   function f(){}
   f.prototype = o;
   return new f();
}

然后再创建一个临时性的构造函数,再讲构造函数传入object()中

 

这种原型式的继承,必须要有一个对象(person)作为另一个对象的基础,然后再根据需求进行修改,于是把person传入到了object(),然后返回一个新对象,这个新对象将person作为原型。yetAnotherPerson 和anotherPerson 都共享了引用性属性friends

 

ECMAScript 5通过新增 Object.create()方法规范化了原型式继承。这个方法接收两个参数:一 个用作新对象原型的对象和(可选的)一个为新对象定义额外属性的对象。在传入一个参数的情况下, Object.create()与 object()方法的行为相同。 

这是一个参数的

 

这是2个参数的

 

 

支持性

IE9+、Firefox 4+、Safari 5+、Opera 12+和 Chrome

在没有必要兴师动众地创建构造函数,而只想让一个对象与另一个对象保持类似的情况下,原型式 继承是完全可以胜任的。不过别忘了,包含引用类型值的属性始终都会共享相应的值,就像使用原型模 式一样。 

 

参考自JavaScript 高级程序设计

 

posted @ 2016-08-05 00:26  进击的前端狗  阅读(488)  评论(0编辑  收藏  举报