javascript关于继承解析
程序员文章站
2023-01-09 17:50:00
上一篇已介绍了组合继承,现在讲讲剩余的几种继承。
原型式继承
调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。
如:
func...
上一篇已介绍了组合继承,现在讲讲剩余的几种继承。
原型式继承
调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。
如:
function personobject(o){ function f(){} f.prototype = o; return new f(); } var person = { name:"nicholas", friends:["shelby","court","van"] } var person_one = personobject(person);
从上面的代码中,我们知道person是person_one的原型。es5中添加了一个方法规范化原型式继承,这个方法是object.create(),这个方法有两个参数,第一个是作为新对象原型的对象,像上面的person,第二个是为新对象定义额外属性的对象。第二个参数可选。
如:
var person_one = object.create(person, { name: { value:"jon" } });
当你只想让一个对象与另一个对象保持类似时,可以使用原型式继承。
寄生式继承
在一个函数里实现一次原型式继承,然后为接收到的这个对象添加自己的属性与方法。
如:
function createanother(o){ var person_one = personobject(o); person_one.sayhi = function(){ alert(" hi "); } return person_one; }
寄生组合式继承
组合继承也有其缺点,它实现了两次属性继承,而寄生组合式继承就避免了这个问题。实例通过构造函数继承了属性,而原型的方法则是通过寄生式继承的方式来继承。
如:
function inherit(subtype, supertype){ var prototype = object(supertype.prototype); prototype.constructor = subtype; subtype.prototype = prototype; }
通过调用上面的函数,实现subtye.prototype的原型是supertype.prototype,完成了原型方法的继承。
以上这篇javascript关于继承解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: 生吃的红薯会有问题吗