JS封装继承函数
2024-08-27 08:36:16
function extend(child,parent){
var F=function(){}
F.prototype=parent.prototype;
child.prototype=new F();
child.prototype=child;
child.uber=parent.prototype; //uber指向父对象的原型。方便子对象调用父对象原型中的重写的方法。
}
function Shape(){}
Shape.prototype.name="Shape";
Shape.prototype.color="blue"; function circle(radius){
this.radius=radius;
} circle.prototype.name="circle";
circle.prototype.getS=function(){
return this.radius*this.radius*3.14;
}
extend(circle,Shape); var cir=new circle(2);
alert(cir.name); //"circle"
alert(cir.color); //"blue"
alert(cir.uber.name); //"Shape"
alert(cir.getS()) //"12.56"
extend函数的第一个参数是子构造器,第二个参数是父构造器;
为什么子构造器的原型对象不直接指向父构造器的原型对象,是因为若child.prototype=parent.prototype,则会出现父子的原型对象绑定在一起,即父子的原型对象的引用相等,相当于指向同一个地址,改变子对象的原型,父对象的原型也会随之改变,
若遍历父对象的原型和子对象的原型,发现两个完全相同个。
var cir=new circle(2);
var shape1=new Shape();
cir.prototype.name="this is circle"; for(var i in shape1){
if(!shape1.hasOwnProperty(i)){ //遍历非实例属性
console.log(i+":"+shape1[i]);
}
} //name:circle
//color:blue
//getS:function (){
return this.radius*this.radius*3.14;
} for(var i in cir){
if(!cir.hasOwnProperty(i)){
console.log(i+":"+cir[i]);
}
} //name:circle
//color:blue
//getS:function (){
return this.radius*this.radius*3.14;
}.
最新文章
- [ZOJ2760]How Many Shortest Path(floyd+最大流)
- Python入门-多行语句
- 转载C#中堆(heap)和栈(stack)的区别
- WSGI是一种编程接口,而uwsgi是一种传输协议
- 需要重新启动计算机.必须重新启动计算机才能安装 SQL Server
- 1小时学Python脚本
- # MongoDB学习笔记(持续更新)
- [条款36]绝不重新定义继承而来的non-virtual函数
- BZOJ 1600: [Usaco2008 Oct]建造栅栏
- CSS知识点:font小细节
- 【openstack N版】——计算服务nova
- PHP解决中文乱码问题
- Yocto和Android编译命令的简化和自动完成的实现
- js:苹果手机页面返回,数据不刷新问题
- 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解
- ElasticSearch6.3.2------入门
- (十)创建ROS消息和ROS服务
- input实现图片或视频上传(样式+代码)
- python的type class
- Oracle Database 12c Preinstall Steps for Oracle Linux Simplified
热门文章
- 模块化之seaJs学习和使用
- php图像处理函数image_type_to_extension、image_type_to_mime_type 的区别
- 基础篇:3.1)规范化:3d草绘
- 转-阿里云Kubernetes容器Istio实践之集成日志
- Oracle触发器简单使用记录
- Python爬虫:常用的浏览器请求头User-Agent(转)
- 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性
- 关于cmdbuild
- Kettle 中生成随机数 或者GUID唯一标识符
- Python实现WEB QQ 登录与消息发送(第一版本 2015.06.26)