微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript关于继承解析

上一篇已介绍了组合继承,现在讲讲剩余的几种继承。

原型式继承

调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。

如:

rush:js;"> 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,第二个是为新对象定义额外属性的对象。第二个参数可选。

如:

rush:js;"> var person_one = Object.create(person,{ name: { value:"Jon" } });

当你只想让一个对象与另一个对象保持类似时,可以使用原型式继承。

寄生式继承

一个函数里实现一次原型式继承,然后为接收到的这个对象添加自己的属性方法

如:

rush:js;"> function createAnother(o){ var person_one = personObject(o); person_one.sayHi = function(){ alert(" hi "); } return person_one; }

寄生组合式继承

组合继承也有其缺点,它实现了两次属性继承,而寄生组合式继承就避免了这个问题。实例通过构造函数继承了属性,而原型的方法则是通过寄生式继承的方式来继承。

如:

rush:js;"> function inherit(subType,superType){ var prototype = Object(superType.prototype); prototype.constructor = subType; subType.prototype = prototype; }

通过调用上面的函数,实现subTye.prototype的原型是superType.prototype,完成了原型方法的继承。

以上这篇javascript关于继承解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

原文地址:https://www.jb51.cc/js/48878.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐