javascript高级特性之"继承"

javaScript中并不存在继承的感念..但是我们可以根据javaScript的原型进行模拟JavaScript的"继承":

1.写两个函数对象,将其中的一个函数赋值给另一个函数对象的原型:

 <script type="text/javascript">
  	function A(){
		this.a = "a";
		this.sayA = function(){
			alert("this is a.");
		}
	}
	var a = new A();
	
	function B(){
		this.b = "b";
		this.sayB = function(){
			alert("this is b.");
		}
	}
	
	B.prototype = a;
	
	//测试:函数对象B就"继承"了函数对象A
	var b = new B();
	
	alert(b.b);
	b.sayB();
	
	alert(b.a);
	b.sayA();
	

  </script>
运行结果:



2.只继承于原型(定义A的函数对象,定义A函数对象的原型.定义B函数对象,把A对象的函数原型赋值给B的原型)

function A(){}
	
	A.prototype = {
		a : "a",
		sayA : function(){
			alert("this is a.")
		}
	}
	
	function B(){
		this.b = "b";
		this.sayB = function(){
			alert("this is b.");
		}
	}
	
	B.prototype = A.prototype;
	
	var b = new B();
	
	alert(b.b);
	b.sayB();
	
	alert(b.a);
	b.sayA();

3.实现多继承

<script type="text/javascript">
  	function A(){}
	A.prototype = {
		a : "a",
		sayA : function(){
			alert("this is a.")
		}
	}
	function B(){}
B.prototype = A.prototype;
B.prototype.b = "b";
	B.prototype.sayB = function(){
		alert("this is b.")
	}

	
	var b = new B();
	alert(b.a);
	b.sayA();
	
	alert(b.b);
	b.sayB();
	
	
	
  </script>

* 分析得出这句话出问题了
* * 因为B.prototype多次调用
* * 出现的顺序有关系?谁先定义,谁被覆盖
* * 原型定义属性和方法的形式有关系?没有关系
 
* 条件:
* * 先实现函数对象B"继承"函数对象A的内容
* * 再利用原型为函数对象B增加属性和方法(分散形式)
 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值