Atitit.实现继承的原理and方法java javascript .net c# php ...
Atitit.实现继承的原理and方法java javascript .net c# php ...
2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1
1. 实现继承的问题
JavaScript中要实现继承,其实就是实现三层含义:
1、子类的实例可以共享父类的方法;
2、子类可以覆盖父类的方法或者扩展新的方法;
3、子类和父类都是子类实例的“类型”。
要解决两个问题:1.如何拷贝基类方法?2.属性如何继承?
JavaScript中,并不直接从语法上支持继承,但是可以通过模拟的方法来实现继承,以下是关于实现继承的几种方法的总结:
1、构造继承法
2、原型继承法
3、实例继承法
4、拷贝继承法
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象
1.对于问题1,一般采用prototype原型方式,通过冒充对象。
|
/*更改Member的prototype属性,以实现继承*/ |
|
09 |
Member.prototype=new User(); |
2.拷贝基类方法代码
|
1 |
Member.prototype=new User(); |
此行代码的含义是new 一个User对象,将此引用传递给Member的原型,这样完成了基类方法的拷贝工作。(备注:此处代码一定要先执行,然后再添加新的方法)。
3. 2.属性如何继承?
对于问题2,一般采用调用基类构造函数
|
/*初始化基类参数*/ |
|
06 |
User.call(this,userid,uname,uage,uscore); |
1.调用基类构造函数代码
|
1 |
User.call(this,userid,uname,uage,uscore); |
此行代码的含义是执行User类的构造函数,并且将Member的this指针域传递给User类,此时User类运行构造函数时,this指向的是Member对象。
4. 几种继承方式的比较
From JavaScript中继承的实现方法 - xieex - 博客园.htm
|
比较项 |
构造继承 |
原型继承 |
实例继承 |
拷贝继承 |
|
静态属性继承 |
N |
Y |
Y |
Y |
|
内置(核心)对象继承 |
N |
部分 |
Y |
Y |
|
多参多重继承 |
Y |
N |
Y |
N |
|
执行效率 |
高 |
高 |
高 |
低 |
|
多继承 |
Y |
N |
N |
Y |
|
instanceof |
false |
true |
false |
false |
5. 常用的apply ,call方法
每种方法都有其适用环境,比如,如果父类带有有参构造函数:这种情况下,prototype就不适用了,可选用apply或call;
在apply和call中,又该如何取舍呢?在OO的继承中,子类继承于父类,那么它应该也是父类的类型。即,ChildClassByCall、ChildClassByApply应该也是ParentClass类型,但我们用"instanceof"检测一下就会发现,通过apply继承的子类,并非ParentClass类型。所以,我们建议用call + prototype 来模拟实现继承。据说,Google Map API 的继承就是使用这种方式哟。
apply 实现
参考::JavaScript继承的模拟实现 - 牦牛 - 博客园.htm
6. 参考
javascript实现类、继承、多态(原创) _ 耕书录.htm
JavaScript中继承的实现方法 - xieex - 博客园.htm
Atitit.实现继承的原理and方法java javascript .net c# php ...的更多相关文章
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- Atitit.异常的设计原理与 策略处理 java 最佳实践 p93
Atitit.异常的设计原理与 策略处理 java 最佳实践 p93 1 异常方面的使用准则,答案是:: 2 1.1 普通项目优先使用异常取代返回值,如果开发类库方面的项目,最好异常机制与返回值都提供 ...
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c# 1. 加密算法的参数::算法/模式/填充 1 2. 标准加密api使用流程1 2.1. Md5——16bi ...
- Atitit 多继承实现解决方案 java c#
Atitit 多继承实现解决方案 java c# Java c#都没有提供多继承的解决方案..默认从语言级别以及没办法多继承了. 只可以崽类库的级别实现拉.. 继承的原理就是,使用一个内部super指 ...
- atitit.木马病毒webshell的原理and设计 java c# .net php.
atitit.木马病毒webshell的原理and设计 java c# .net php. 1. 隐蔽性 编辑 WebShell后门具有隐蔽性,一般有隐藏在正常文件中并修改文件时间达到隐蔽的,还有利用 ...
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本 1. dwr的优点相对于ajax来说..1 2. DWR工作原理1 3. Dwr的架构2 4. 自定义dwr ...
- atitit.session的原理以及设计 java php实现的异同
atitit.session的原理以及设计 java php实现的异同 1. session的保存:java在内存中,php脚本因为不能常驻内存,所以在文件中 1 2. php的session机制 1 ...
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js 1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释. 1 1.2. 数据库里面的复合变量1 ...
随机推荐
- IOC和AOP使用扩展 多种方式实现依赖注入
多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 sett ...
- CSS基本知识和选择器
一.CSS基本知识 内联式css样式,直接写在现有的HTML标签中 内联式css样式表就是把css代码直接写在现有的HTML标签中,如下面代码: <p style="color:red ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- poj1741 树上的点分治
题意: 一棵10000个点的树,每条边的长不超过1000,给定一个值k,问距离不超过k的点对数有多少.(多组数据) 输入样例: 5 4 1 2 3 1 3 1 1 4 2 3 5 1 0 0输出样例: ...
- java io学习之File类
1.先看下四个静态变量 static String pathSeparator The system-dependent path-separator character, represented a ...
- SAP 设置周期性的后台程序,SM36,图解操作 (转)
SM36是设置SAP周期性运行的事务码 来测试一下,首先先写一个程序: 我有一个zzp_people2的数据表. DATA : INT1 TYPE I. DATA : ITAB LIKE ZZP_PE ...
- 用PHP将Unicode 转化为UTF-8
function unescape($str) { $str = rawurldecode($str); preg_match_all("/(?:%u.{4})|&#x.{4};|& ...
- 电梯多媒体WinForm项目Q&A总结
最近,我给一家公司做了个电梯多媒体软件,该软件使用C#编写,现在我将其中遇到的问题及其解决方法总结一下,以便下次再遇到同样的问题可以快速解决:同时,也给博友分享一下,共同学习,共同提高. 1.Ques ...
- AngularJs自定义指令详解(3) - scope
我们之所以要定义指令,目的是重用指令.假设有这么一个应用场景:在同一个html里使用了两次my-directive,第一个my-directive要展示的是Hello World,第二个my-dire ...
- 【转载】PHP.INI配置:Session配置详细说明教程
网上有很多PHP.INI文件配置的中文说明,但是对于PHP初学者来说在进行PHP运行环境搭建配置时还是容易一头雾水,今天换一种角度来分享如何进行php.ini配置,以求达到解决实际问题的效果,开篇以P ...