JS封装继承函数
2017-04-08 18:12
363 查看
1 function extend(child,parent){ 2 var F=function(){} 3 F.prototype=parent.prototype; 4 child.prototype=new F(); 5 child.prototype=child; 6 child.uber=parent.prototype; //uber指向父对象的原型。方便子对象调用父对象原型中的重写的方法。 7 } 8 function Shape(){} 9 Shape.prototype.name="Shape"; 10 Shape.prototype.color="blue"; 11 12 function circle(radius){ 13 this.radius=radius; 14 } 15 16 circle.prototype.name="circle"; 17 circle.prototype.getS=function(){ 18 return this.radius*this.radius*3.14; 19 } 20 extend(circle,Shape); 21 22 var cir=new circle(2); 23 alert(cir.name); //"circle" 24 alert(cir.color); //"blue" 25 alert(cir.uber.name); //"Shape" 26 alert(cir.getS()) //"12.56"
extend函数的第一个参数是子构造器,第二个参数是父构造器;
为什么子构造器的原型对象不直接指向父构造器的原型对象,是因为若child.prototype=parent.prototype,则会出现父子的原型对象绑定在一起,即父子的原型对象的引用相等,相当于指向同一个地址,改变子对象的原型,父对象的原型也会随之改变, 若遍历父对象的原型和子对象的原型,发现两个完全相同个。
1 var cir=new circle(2); 2 var shape1=new Shape(); 3 cir.prototype.name="this is circle"; 4 5 6 for(var i in shape1){
相关文章推荐
- JS封装继承函数
- 一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……
- JS继承 封装函数
- js闭包的用途(匿名自执行函数,缓存,实现封装,实现面向对象)
- cocos2d-js 中ccui.ListView继承 ccui.ScrollView 但 addEventListenerScrollView 函数无法调用
- js继承封装(二)
- js原生函数一些封装
- 通过backbone的extend函数又想了一下JS的继承
- JS 实现 创建类、继承、方法添加、对象克隆、数组封装操作
- js原生设计模式——2面向对象编程之继承—原型继承(类式继承的封装)
- js创建对象 对象如何继承 及一些工具函数
- js 基于函数伪造的方式实现继承
- JS实现运动缓冲效果的封装函数示例
- JS封装兼容性添加、删除事件的函数
- js难点(二)封装与继承
- 前端动画渲染引擎pixi.js系列(3)container和Sprite继承外专有的函数与方法
- js获取指定节点对象的样式属性的值的封装函数(兼容ie、Opera和符合w3c标准浏览器)
- 浅谈js函数继承模式之二:借用模式
- Easyui封装公用创建dialog的JS函数
- javascript的函数、创建对象、封装、属性和方法、继承