js对象之间的继承
js的对象之间的继承抛弃了原型与构造器的概念,而转为字面量对象之间进行属性拷贝的方式进行继承。
首先我们来写一个封装好的继承函数:
function extend(parent){
var child={};
for(var i in parent){
child[i]=parent[i];
}
child.uber=parent;
return child;
}
函数有一个形参parent,函数内部新建一个空的子对象,这个子对象就像一个白的画板,逐渐的将父对象上的内容临摹上去。for循环当中是将父对象中的属性和方法逐个复制给子对象。再将子对象的uber指向父对象,这样调用子对象的uber属性就可以调用父对象的属性和方法了,这相当与java中的super,为什么js当中不用super呢,因为super在js中是保留字,所以采用德语与“super”同义的“uber”来替代。
下面来看看这个函数的实际应用,首先创建一个父对象:
var Shape={
color:"blue",
name:"shape",
getName:function(){
return this.name;
}
}
接着我们来实现继承,并扩展和重写子对象的一些方法:
var circle=extend(Shape);
circle.name="circle";
circle.getName=function(){
return "parentName:"+this.uber.getName()+" childName:"+this.name;
}
circle.getS=function(){
return this.radius*this.radius*3.14;
}
circle.init=function(radius){
this.radius=radius;
}
首先使用extend函数实现继承
子对象添加了新的name属性和新的getName方法,还有扩展的getS方法和init初始化方法
getName中this.uber.getName()调用父对象的getName()方法,得到父对象的name属性,this.name得到自身的name属性。
接下来执行方法:
circle.init(5);
console.log(circle.name+","+circle.uber.name);
console.log(circle.getName()+","+circle.uber.getName());
console.log(circle.getS()); /*
结果:
circle,shape
parentName:shape childName:circle,shape
78.5
*/
js对象之间的继承的更多相关文章
- js对象之间的"继承"的五种方法
今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- JS对象之间的关系
JS对象类型 JS中,可以将对象分为"内部对象"."宿主对象"和"自定义对象"三种. 1.本地对象 ECMA-262定义为"独立于 ...
- JSON和JS对象之间的互转
1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的 ...
- JSON和JS对象之间的互转(转)
文章出处:http://www.cnblogs.com/dyllove98/p/4235909.html 1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQ ...
- JSON和JS对象之间的互转【转】
1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的 ...
- javascript --- 对象之间的继承
了解这一章之前,先把我们之前讲到的以构造函数创建对象为前提的继承抛到一边. 首先,我们先用一个var o = {}创建一个没有任何属性的空对象作为我们的‘画板’,然互在逐步向这个画板里添加属性,和方法 ...
- JSON和js对象之间的相互转化
jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 http://www. ...
- JS对象与Dom对象与jQuery对象之间的区别
前言 通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的 $("#save&qu ...
随机推荐
- HEOI2019游记(退役记)
少了回程铁路相关信息,有空补 AFO 辣鸡蒟蒻ghj1222顺利地退役了 由于没带手机拍照片,本次坐动车不写运转记录,下次去CTS/APIO应该是坐普速车,应该能带手机拍照,应该会写运转记录 Day ...
- [inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行
[inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行 1.模板解释器 hotspot解释器模块(hotspot\src\share\vm\inter ...
- PM2的安装和使用简介
一.简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 二.前期必备 node 环境 npm 三.安装 全局安装 ...
- C运算符和表达式
C语言入门(5)——运算符与表达式 版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究. https://blog.csdn.net/yinch ...
- 第十次 Scrum Meeting
第十次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/16 14:30 30min 新主楼F座2F 附Github仓库:WEDO 例会照片 工作情况总结 人员 上阶 ...
- try-catch里面加了return后,finally还会执行吗?
请看下面的方法,在我们的catch里面,捕获到了异常之后,我们的catch模块里面的语句,还会接着执行,当我们执行到return之后,我们不会立即返回,而是会接着执行finally块里面的代码,只有执 ...
- python设计模式--读书笔记
GoF在其设计模式一书中提出了23种设计模式,并将其分为三类: 创建型模式 将对象创建的细节隔离开来,代码与所创建的对象的类型无关. 结构型模式 简化结构,识别类与对象间的关系,重点关注类的继承和组合 ...
- mysql 01
CREATE TABLE student(sid INT,sname VARCHAR(10),ssex CHAR(2) )/*插入数据*/INSERT INTO student VALUES(1,'袁 ...
- 【OpenCV-Python】-图像形态学转化
原文为段立辉翻译,感谢Linux公社此文档为自学转述,如有侵权请联系本人. 目标: • 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 • 学习的函数有:cv2.erode(),cv2.dil ...
- RequireJs使用快速入门
前言:Requirejs作为一个ES5环境流行的模块加载器,在很多项目中使用它.而且这个开源库任然在更新,同类产品seajs已经不更新了. ES6之后引入import 或者使用Commonjs的方式引 ...