下面小编就为大家全面的介绍一下 javascript 在的继承。希望对大家有所帮助。一起跟随小编过来看看吧
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
上一篇已介绍了组合继承,现在讲讲剩余的几种继承。
原型式继承
调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。
如:
- 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 关于继承解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 phperz。
来源: http://www.phperz.com/article/17/0228/265882.html