- 浏览: 23398 次
- 性别:
- 来自: 杭州
最近访客 更多访客>>
最新评论
-
suiye007:
其实重点就是那张图啊!
js 关于鼠标在页面中坐标显示的种种 -
webee:
看的眼花啊!实际只要知道这些属性就可以了,用的时候测试一两次就 ...
js 关于鼠标在页面中坐标显示的种种 -
hduyou:
libmw 写道很好,搜藏了恩 欢迎共享
js 关于鼠标在页面中坐标显示的种种 -
ksqqxq:
ranbo 写道还有第三种
if(){
}else if(){ ...
js 两种方式进行字符匹配 -
libmw:
很好,搜藏了
js 关于鼠标在页面中坐标显示的种种
最基本的用法 把ClassA的一个实例赋值给ClassB,
ClassB就继承了ClassA的所有属性。
代码入下:
从原型继承理论的角度去考虑,
js的原型继承是引用原型,不是复制原型,
所以,修改原型会导致所有B的实例的变化。
代码如下:
然而 子类对象的写操作只访问子类对象中成员,
它们之间不会互相影响,因此,
写是写子类 读是读原型(如果子类中没有的话)。
每个子类对象都执有同一个原型的引用,
所以子类对象中的原型成员实际是同一个。
构造子类时 原型的构造函数不会被执行
接下来是致命的,在子类对象中访问原型的成员对象:
所以 在prototype继承中 原型类中不能有成员对象! 所有成员必须是值类型数据(string也可以)
用prototype继承有执行效率高,不会浪费内存,为父类动态添置方法后子类中马上可见等的优点。
prototype继承是通过把子类的原型对象(prototype)设置成父类的一个实例来进行继承的。
prototype继承也有四个比较明显的缺点:
缺点一:父类的构造函数不是像JAVA中那样在给子类进行实例化时执行的,而是在设置继承的时候执行的,并且只执行一次。这往往不是我们希望的,特别是父类的构造函数中有一些特殊操作的情况下。
缺点二:由于父类的构造函数不是在子类进行实例化时执行,在父类的构造函数中设置的成员变量到了子类中就成了所有实例对象公有的公共变量。由于JavaScript中继承只发生在“获取”属性的值时,对于属性的值是String,Number和Boolean这些数据本身不能被修改的类型时没有什么影响。但是Array和Object类型就会有问题。
缺点三:如果父类的构造函数需要参数,我们就没有办法了。
缺点四:子类原本的原型对象被替换了,子类本身的constructor属性就没有了。在类的实例取它的constructor属性时,取得的是从父类中继承的constructor属性,从而constructor的值是父类而不是子类。
可以针对prototype的缺点进行改造
比如把它写成Function对象的一个方法,这样用的时候方便。
Function.prototype.Extends = function (parentClass)
{
var Bs = new Function();
Bs.prototype = parentClass.prototype;
this.prototype = new Bs();
this.prototype.Super = parentClass;
this.prototype.constructor = this;
}
ClassB就继承了ClassA的所有属性。
代码入下:
function ClassA() { this.a='a'; } function ClassB() { this.b='b'; } ClassB.prototype=new ClassA(); var objB=new ClassB(); for(var p in objB)document.write(p+" ");
从原型继承理论的角度去考虑,
js的原型继承是引用原型,不是复制原型,
所以,修改原型会导致所有B的实例的变化。
代码如下:
function ClassA() { this.a='a'; } function ClassB() { this.b='b'; } ClassB.prototype=new ClassA(); var objB=new ClassB(); alert(objB.a); ClassB.prototype.a='changed!!'; alert(objB.a);
然而 子类对象的写操作只访问子类对象中成员,
它们之间不会互相影响,因此,
写是写子类 读是读原型(如果子类中没有的话)。
function ClassA() { this.a='a'; } function ClassB() { this.b='b'; } ClassB.prototype=new ClassA(); var objB1=new ClassB(); var objB2=new ClassB(); objB1.a='!!!'; alert(objB1.a); alert(objB2.a);
每个子类对象都执有同一个原型的引用,
所以子类对象中的原型成员实际是同一个。
function ClassA() { this.a=function(){alert();}; } function ClassB() { this.b=function(){alert();}; } ClassB.prototype=new ClassA(); var objB1=new ClassB(); var objB2=new ClassB(); alert(objB1.a==objB2.a); alert(objB1.b==objB2.b);
构造子类时 原型的构造函数不会被执行
function ClassA() { alert("a"); this.a=function(){alert();}; } function ClassB() { alert("b"); this.b=function(){alert();}; } ClassB.prototype=new ClassA(); var objB1=new ClassB(); var objB2=new ClassB();
接下来是致命的,在子类对象中访问原型的成员对象:
function ClassA() { this.a=[]; } function ClassB() { this.b=function(){alert();}; } ClassB.prototype=new ClassA(); var objB1=new ClassB(); var objB2=new ClassB(); objB1.a.push(1,2,3); alert(objB2.a); //所有b的实例中的a成员全都变了!!
所以 在prototype继承中 原型类中不能有成员对象! 所有成员必须是值类型数据(string也可以)
用prototype继承有执行效率高,不会浪费内存,为父类动态添置方法后子类中马上可见等的优点。
prototype继承是通过把子类的原型对象(prototype)设置成父类的一个实例来进行继承的。
prototype继承也有四个比较明显的缺点:
缺点一:父类的构造函数不是像JAVA中那样在给子类进行实例化时执行的,而是在设置继承的时候执行的,并且只执行一次。这往往不是我们希望的,特别是父类的构造函数中有一些特殊操作的情况下。
缺点二:由于父类的构造函数不是在子类进行实例化时执行,在父类的构造函数中设置的成员变量到了子类中就成了所有实例对象公有的公共变量。由于JavaScript中继承只发生在“获取”属性的值时,对于属性的值是String,Number和Boolean这些数据本身不能被修改的类型时没有什么影响。但是Array和Object类型就会有问题。
缺点三:如果父类的构造函数需要参数,我们就没有办法了。
缺点四:子类原本的原型对象被替换了,子类本身的constructor属性就没有了。在类的实例取它的constructor属性时,取得的是从父类中继承的constructor属性,从而constructor的值是父类而不是子类。
可以针对prototype的缺点进行改造
比如把它写成Function对象的一个方法,这样用的时候方便。
Function.prototype.Extends = function (parentClass)
{
var Bs = new Function();
Bs.prototype = parentClass.prototype;
this.prototype = new Bs();
this.prototype.Super = parentClass;
this.prototype.constructor = this;
}
//针对第3,6个 <script> function ClassA() { this.a=[] this.aa=100; } function ClassB() { this.b=function(){return "classbb"}; } ClassB.prototype=new ClassA(); var objB1=new ClassB(); var objB2=new ClassB(); objB1.a.push(1,2,3); objB1.aa=10100 alert(objB2.a); alert(objB2.aa); </script>
发表评论
-
屏蔽表单修改
2010-11-17 14:22 6561 通过js实现-onfocus="this.blu ... -
css 分页效果
2010-11-16 14:47 811http://www.jscode.cn/jave_page/ ... -
全景展示
2010-11-15 12:29 714http://slide.mil.news.sina.com. ... -
js 动画
2010-11-11 18:04 746http://mojo-js.appspot.com/cont ... -
css+java 侧面导航栏
2010-10-25 17:11 1708<!DOCTYPE html PUBLIC &quo ... -
js 关于鼠标在页面中坐标显示的种种
2010-09-29 20:32 981首先先看一段代码 <html> <he ... -
js 牛人的博客 学习的好地方
2010-09-27 23:35 601http://www.cnblogs.com/cloudgam ... -
js 图片切换效果
2010-09-27 23:33 828//代码一 <!DOCTYPE html PUBL ... -
js 几款图片切换 特效
2010-09-27 23:23 1128<!DOCTYPE html PUBLIC '- ... -
js 107个常用javascript语句
2010-09-27 08:13 6491. document.write( " &qu ... -
js 判断浏览器类型以及操作系统
2010-09-26 23:51 1057var sUserAgent = navigator.us ... -
js 一些正则表达式(转载)
2010-09-26 23:39 747//1 参考网址 :http://sharejs.co ... -
js 自定范围产生随机数字
2010-09-26 23:36 861function selectFrom(iFirstV ... -
js 两种方式进行字符匹配
2010-09-26 23:32 933第一种方式 replace Function.prot ... -
js 简单代码 有个疑问 请高手解答
2010-09-25 23:45 747var aNumbers=new Array(); va ... -
js 杨辉三角
2010-09-25 22:20 1366function Combination(m,n){ ... -
js 减少全局变量污染的方法
2010-09-24 19:03 1175//最小化使用全局变量的一个方法是在你的应用中只创建唯一一 ... -
js replace使用
2010-09-24 16:42 835Function.prototype.method=fun ... -
js 方法扩展
2010-09-24 16:06 675//Object.prototype是可以扩充的,同样Ar ... -
js 判断数组以及数字
2010-09-24 14:26 1944判断数组 var a=['you','love','fan ...
相关推荐
基于C51单片机Proteu仿真实例及软件源码+文档说明 之-电子琴.zip
均包含代码,文章,部分项目包含ppt
基于java的智乐健身后台管理系统设计与实现.docx
基于java的鲜花销售管理系统设计与实现.docx
内容概要:本文回顾了近年来关于数字孪生(Digital Twin)的概念和技术的发展历程,并详尽介绍了这种技术在未来车间中的潜在应用场景和需克服的难关。数字孪生是一种用于集成物理和虚拟系统的技术手段,它能够在产品设计、智能生产和预防性维护等多个领域发挥作用。 适合人群:研究人员和工程师们希望更好地理解数字孪生的基本理论与具体应用实践。 使用场景及目标:涵盖了从产品的设计、制造过程到服役阶段故障预测的全过程,并探讨了基于DT的具体实施路径。 其他说明:强调了信息物理系统的交互融合是DT成功部署的基础,而建立高准确度的多维虚拟模型、孪生数据驱动和实现动态实时交互将是推进这一前沿概念向前发展的关键。
管理员能够查看、添加、修改和删除景点分类信息,景点分类管理 用户在系统前台可查看系统信息,包括首页、景点信息、酒店信息以及客房信息等 用户要登录界面可输入用户名、密码,点击登录按钮进行登录系统 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog
关键字:UTM/企业防火墙/NGFW 功能:vpn,sdwan,无线控制器,ldap,双因子认证,nat/透明,终端控制,av防病毒,ips入侵检测,应用控制,web过滤, FortiGate UTM/NGFW产品 ①端口:8口、16口、24口、48口 ②层数:二层(接入层交换机、傻瓜式交换机)、三层(核心交换机、汇聚交换机) ③是否网管 网管: 非网管(傻瓜式交换机,即插即用) WEB网管(S1720GW系列) 全网管(S1720GFR系列,S2700以上的型号都为全网管) ④速率:百兆、千兆、万兆等 1.带机量(支持用户数) 2.端口数 3.吞吐量,并发连接数 4.功能 功能差异须知 NG-xxxx产品特有功能 TG-xxxx&NG-xxxx共有功能 TG-xxxx产品特有功能 FW:网络接入、安全防护、高可用性、身份认证、系统服务、系统管理 ●应用层DDOS攻击防护 负载均衡:多链路负载均衡与备份、多链路智能选路技术、多算法的服务器负载均衡 ●异常行为分析:内置统计只能算法,智能学习
简化设计,轻松管理 一键设计:快速创建和管理SQLite3数据库,简化数据库设计流程。 高效查询:强大的查询功能,帮助您轻松处理复杂的SQL语句。 功能全面,灵活便捷 可视化界面:直观的图形界面,让您无需编写繁琐的SQL代码,即可完成数据库设计。 数据同步:支持实时数据同步,确保您的数据库始终保持最新状态。 高度兼容,广泛适用 跨平台支持:适用于Windows、Mac和Linux等多种操作系统,满足不同开发环境的需求。 多语言集成:与C、C++等主流编程语言无缝对接,提高开发效率。 安全可靠,稳定运行 数据备份:内置数据备份与恢复功能,保障数据安全。 性能优化:优化数据库结构,提升查询速度和存储效率。
小程序-滴滴作业.zip 小程序-滴滴作业.zip 小程序-滴滴作业.zip
地线贴标_复制.ezd
Chrome主题-开阔绿地草地主题
基于java校园兼职平台设计与实现.docx
基于java的旅游管理系统设计与实现.docx
基于java的技术大健康综合咨询问诊平台的设计与实现.docx
均包含代码,文章,部分项目包含ppt
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
基于java的共享客栈管理系统设计与实现.docx
基于java的车库智能管理平台设计与实现.docx
基于java的学生宿舍管理设计与实现.docx
【C++】项目设计资源 【C++】新手入门教程 包含例子和相关说明