文档章节

javascript继承实现

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 377
阅读 1
收藏 0

使用javascript写自己的继承方法,主要用到javascript原型和构造方法方面的知识。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
		<title>使用javascript实现继承</title>
		<script type="text/javascript" charset="GBK">
			//sub是子类,sup是父类
			function extend(sub,sup){
				// 目的: 实现只继承父类的原型对象
				var F = new Function();// 1 创建一个空函数    目的:空函数进行中转
				F.prototype = sup.prototype;// 2 实现空函数的原型对象和超类的原型对象转换
				sub.prototype = new F(); // 3 原型继承 
				sub.prototype.constructor = sub;//4还原子类的构造器
				//保存一下父类的原型对象: 一方面方便解耦  另一方面方便获得父类的原型对象
				sub.superClass = sup.prototype;//自定义一个子类的静态属性 接受父类的原型对象
				//判断父类的原型对象的构造器 (加保险)
				if(sup.prototype.constructor == Object.prototype.constructor ){
					sup.prototype.constructor = sup;
				}
			}
			//应用举例
			//父类
			function Person(name , age){
				this.name = name;
				this.age = age;
			};
			Person.prototype = {
				constructor:Person,
				sayHello:function(){
					alert("Hello world");
				}
			};			
			//子类
			function Boy(name,age,sex){
				//call 绑定父类的模版函数 实现 借用构造函数继承 只复制了父类的模版
				Boy.superClass.constructor.call(this,name,age);
				this.sex = sex;
			};
			//原型继承的方式: 即继承了父类的模版 又继承了父类的原型对象
			//Boy.prototype = new Person();
			// 只继承一遍父类的原型对象
			extend(Boy , Person);
			
			Boy.prototype.sayHello = function(){
				alert('hi javascript!');
			}
			var b = new Boy('张三' , 20 , '男');
			alert(b.name); 
			alert(b.sex);
			b.sayHello();
			Boy.superClass.sayHello.call(b);//父类的方法
				
		</script>
	</head>
	<body>
	</body>
</html>


本文转载自:http://blog.csdn.net/bq1073100909/article/details/49592683

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
JavaScript 中的继承:ES3、ES5 和 ES6

选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaScript 中的继承有很多种实现方式,可以分成下面四类: Mixin 模式,即属性混入,从一个...

天方夜
07/04
0
0
JavaScript和Lua的类继承

javascript 本身虽是一门面向对象的编程语言, 但并没有明确提供继承方式.二十多年间,众多高手提供很多模拟继承的实现, 主要的有:对象冒充,call/apply,prototype,以及深复制等. 网上有很多此类...

南苑听风
2014/10/31
0
3
Cocos2d-JS中JavaScript继承

JavaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求。由于Cocos2d-JS引擎是从Cocos2d-x演变而来的,在Cocos2d-J...

智捷课堂
2015/03/17
0
0
用通俗易懂的语言介绍JavaScript原型

原型(prototype)是每个JavaScript开发人员必须理解的基本概念,本文的目标是通俗而又详细地解释JavaScript的原型。如果你读完这篇博文以后还是不理解JavaScript的原型,请将你的问题写在下...

gsbhzh
2014/10/29
0
0
深入理解 JavaScript 原型继承

继承的本质:重用 在探讨 JavaScript 的原型继承之前,先不妨想想为什么要继承? 考虑一个场景,如果我们有两个对象,它们一部分属性相同,另一部属性不同。通常一个好的设计方案是将相同逻辑...

穿越过来的键盘手
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部