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;
}.

最新文章

  1. [ZOJ2760]How Many Shortest Path(floyd+最大流)
  2. Python入门-多行语句
  3. 转载C#中堆(heap)和栈(stack)的区别
  4. WSGI是一种编程接口,而uwsgi是一种传输协议
  5. 需要重新启动计算机.必须重新启动计算机才能安装 SQL Server
  6. 1小时学Python脚本
  7. # MongoDB学习笔记(持续更新)
  8. [条款36]绝不重新定义继承而来的non-virtual函数
  9. BZOJ 1600: [Usaco2008 Oct]建造栅栏
  10. CSS知识点:font小细节
  11. 【openstack N版】——计算服务nova
  12. PHP解决中文乱码问题
  13. Yocto和Android编译命令的简化和自动完成的实现
  14. js:苹果手机页面返回,数据不刷新问题
  15. 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解
  16. ElasticSearch6.3.2------入门
  17. (十)创建ROS消息和ROS服务
  18. input实现图片或视频上传(样式+代码)
  19. python的type class
  20. Oracle Database 12c Preinstall Steps for Oracle Linux Simplified

热门文章

  1. 模块化之seaJs学习和使用
  2. php图像处理函数image_type_to_extension、image_type_to_mime_type 的区别
  3. 基础篇:3.1)规范化:3d草绘
  4. 转-阿里云Kubernetes容器Istio实践之集成日志
  5. Oracle触发器简单使用记录
  6. Python爬虫:常用的浏览器请求头User-Agent(转)
  7. 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性
  8. 关于cmdbuild
  9. Kettle 中生成随机数 或者GUID唯一标识符
  10. Python实现WEB QQ 登录与消息发送(第一版本 2015.06.26)