javascript的几种继承方法
来源:互联网 发布:mysql统计不重复数据 编辑:程序博客网 时间:2024/06/16 22:53
1、原型链
原理:利用原型让一个引用类型继承另外一个引用类型的属性和方法。
构造函数,原型,实例之间的关系:每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
原型链实现继承例子:
function SuperType() {this.property = true;}SuperType.prototype.getSuperValue = function() {return this.property;}function SubType() {this.property = false;}//继承了SuperTypeSubType.prototype = new SuperType();SubType.prototype.getSubValue = function (){return this.property;}var instance = new SubType();console.log(instance.getSuperValue());//true2、借用构造函数
原理:在子类型构造函数的内部调用超类构造函数,通过使用call()和apply()方法可以在新创建的对象上执行构造函数。
function SuperType(){this.colors=["red","blue","green"];}function SubType(){SuperType.call(this);}var instance1=new SubType();instance1.colors.push("black");console.log(instance1.colors);var instance2=new SubType();console.log(instance2.colors);
3、组合继承
原理::将原型链和借用构造函数的技术组合在一块,从而发挥两者之长的一种继承模式。
function SuperType(name){ this.name=name; this.colors=["red","blue","green"]; } SuperType.prototype.sayName=function(){ console.log(this.name); } function SubType(name,age){ SuperType.call(this,name); this.age=age; } //继承方法 SubType.prototype=new SuperType(); SubType.prototype.constructor=SubType; SubType.prototype.sayAge=function(){ console.log(this.age); } var instance1=new SubType("EvanChen",18); instance1.colors.push("black"); console.log(instance1.colors); instance1.sayName(); instance1.sayAge(); var instance2=new SubType("EvanChen666",20); console.log(instance2.colors); instance2.sayName(); instance2.sayAge();4、原型链继承
原理:借助原型可以基于已有的对象创建新对象,同时还不必须因此创建自定义的类型。
var person={ name:"EvanChen", friends:["Shelby","Court","Van"] }; var anotherPerson=Object.create(person); anotherPerson.name="Greg"; anotherPerson.friends.push("Rob"); var yetAnotherPerson=Object.create(person); yetAnotherPerson.name="Linda"; yetAnotherPerson.friends.push("Barbie"); console.log(person.friends);
5、寄生式继承
原理:创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真正是它做了所有工作一样返回对象
function createAnother(original){ var clone=Object(original); clone.sayHi=function(){ alert("hi"); }; return clone; } var person={ name:"EvanChen", friends:["Shelby","Court","Van"] }; var anotherPerson=createAnother(person); anotherPerson.sayHi();
6、寄生组合式继承
原理:通过借用函数来继承属性,通过原型链的混成形式来继承方法
function inheritProperty(subType, superType) {var prototype = object(superType.prototype);//创建对象prototype.constructor = subType;//增强对象subType.prototype = prototype;//指定对象 } function SuperType(name){this.name = name;this.colors = ["red","blue","green"]; }SuperType.prototype.sayName = function (){alert(this.name);};function SubType(name,age){SuperType.call(this,name);this.age = age;}inheritProperty(SubType,SuperType);SubType.prototype.sayAge = function() {alert(this.age);}
阅读全文
0 0
- javascript 继承类的几种方法
- javascript的几种继承方法
- JavaScript继承实现的几种方法
- javascript的几种继承方法
- JavaScript继承的几种方法比较
- JavaScript中的继承以及实现继承的几种方法
- javascript中类继承的几中的几种方法
- JavaScript中的关于继承的几种方法
- javascript 对象继承的几种方式
- JavaScript继承的几种方式解析
- javascript 继承的几种方式
- JavaScript继承的几种方式
- javascript 实现继承的几种方式
- javascript的几种继承方式
- JavaScript的几种继承方式
- javascript继承的几种方式
- javascript实现继承的几种方式
- javascript实现继承的几种方式
- 关于haproxy和keepalived导致的日常问题总结汇总
- 文本域表单验证
- 《代码整洁之道》摘录总结
- js底层方法详解
- 频道管理低仿
- javascript的几种继承方法
- 高并发解决方案--负载均衡
- sqldeveloper 数据导入导出
- Hibernate Validator验证注解说明
- 05. Ping 包分析 ❀ 数据包分析工具 Wireshark
- yAutoGUI 简介【转】
- 如何解决APICloud Studio在IOS上无法USB真机同步?
- Knight Moves
- JavaScript——鼠标滑过事件