javascript继承
来源:互联网 发布:数据统计与分析专业 编辑:程序博客网 时间:2024/05/22 15:12
原型继承
function Box(){ this.name = 'Lee'; } Box.prototype.name='Jack';//构造中有就从构造中取,没有就找原型 function Desk(){ this.age=12; } Desk.prototype = new Box(); var desk = new Desk(); alert(desk.name);//Lee
借用构造函数继承(对象冒充)
function Box(name,age){ this.name = name; this.age = age; this.family = ['哥哥','姐姐','弟弟'];//引用类型放在构造中不会被共享 } Box.prototype.run = function(){ return this.name+this.age; } function Desk(name,age){ Box.call(this,name,age); } var desk = new Desk(); alert(desk.family);//哥哥,姐姐,弟弟 alert(desk.run());//undefine这种方式继承不到原型
对象冒充+原型链继承
function Box(name,age){ this.name = name; this.age = age; this.family = ['哥哥','姐姐','弟弟']; } Box.prototype.run = function(){ return this.name+this.age; } function Desk(name,age){ Box.call(this,name,age); } Desk.prototype = new Box(); var desk = new Desk("Lee",12); alert(desk.family);//哥哥,姐姐,弟弟 alert(desk.run())//Lee12
原型式继承
function obj(o){ //o表示要传递进去的一个对象 function F(){}; //F构造是一个临时新建的对象,用来存储传递过来的o对象 F.prototype = o; //将o赋值给F构造的原型对象 return new F(); } var box = { name:'Lee', age:12, family:['哥哥','姐姐','妹妹'] }; var box1 = obj(box); alert(box1.name);//Lee
最终版:寄生组合继承
//中转函数 function obj(o){ //o表示要传递进去的一个对象 function F(){}; //F构造是一个临时新建的对象,用来存储传递过来的o对象 F.prototype = o; //将o赋值给F构造的原型对象 return new F(); } //寄生函数 function create(box,desk){ var f = obj(box.prototype);//传入Box的原型对象 //f.constructor = desk; //原型对象的构造指向Desk desk.prototype = f; //Desk的原型指向Box的原型 } function Box(name,age){ this.name = name; this.age = age; } Box.prototype.run = function(){ return this.name + this.age +'运行中'; } function Desk(name,age){ Box.call(this,name,age); } create(Box,Desk); var desk = new Desk('Lee',12); alert(desk.run());//Lee12运行中 alert(Desk.prototype.constructor);
0 0
- javascript继承
- javascript继承
- javascript 继承
- Javascript继承
- Javascript继承
- javascript继承
- Javascript继承
- javascript继承
- JavaScript 继承
- javascript 继承
- JavaScript 继承
- javascript 继承
- javascript 继承
- Javascript继承
- Javascript继承
- Javascript 继承
- JavaScript 继承
- javascript继承
- LintCode 把排序数组转换为高度最小的二叉搜索树
- 用户登录记住密码
- ZUNIONSTORE
- FZU2092-收集水晶
- LintCode 子树
- javascript继承
- Android GPS定位(获取经纬度)
- java多线程:17、面试题1
- python2 与Python 3 的区别(持续更新...)
- Android RadioButton代码去掉圆点绝对有效
- Java代码实现调用BAT脚本文件杀死进程
- 数据结构——JAVA实现静态链表
- day02_JS&DOM
- 计算机为什么要采用补码存储数据