JavaScript之单继承与多继承

我们都知道在java中存在继承,继承的意思就相当于,你从你父母那里继承家产,你拥有了你父母的一切。在java中继承需要用到关键字extends,但是在JavaScript中并不是这样的,下面来看几种实现继承的方法:

1、

<Script>
	function fun1() {

	}
	function fun2() {
		this.name = "兰博基尼";
		this.run = function() {
			alert("我能跑");
		};
	}
	//如果一个对象函数(fun1)想要继承另一个对象函数(fun2)
	//那么就让fun1()的原型函数是fun2(),从而实现了继承关系。
	fun1.prototype = new fun2();
	var car = new fun1();
	alert(car.name);
	car.run();
  </Script>

2、

call属性实现继承:调用一个对象的方法,以另一个对象替换当前对象,具体做法是:function.call(this,参数1,参     数2,.....)后边的参数是传递给function对象函数的。下面来看代码:

<Script>
	function fun1(name) {
		this.name = name;
		this.play = function() {
			alert("我的速度很快哦");
		};
	}
	function fun2() {
		window.fun1.call(this,"法拉利");
	}
	var car = new fun2();
	alert(car.name);
	car.play();
</Script>
3、

apply属性实现继承:调用一个对象的方法,以另一个对象替换当前对象,具体做法是:function.apply(this,一个 数组),后边的数组中存储的数据是要传递给function对象函数的参数。下面来看代码:

<Script>
	function fun1() {
		window.fun2.apply(this,["法拉利","500km/h","$22222222"]);
	}
	function fun2(name,speed,price) {
		this.name = name;
		this.speed = speed;
		this.price = price;
		this.play = function() {
			alert("我很快");
		};
	}
	var car = new fun1();
	alert(car.name);
	alert(car.speed);
	alert(car.price);
	car.play();
</Script>
其实call属性和apply属性的作用都是一样的,都可以实现继承。只不过实现的方法不一样而已,不同就是在传递参数的时call采用的方法是将所有属性一一列出,而apply采用的方式是将要传递的参数放进一个数组中。


下面来说一下多继承。我们都知道一个对象函数不会仅仅继承一个对象函数,它可以继承多个对象函数来实现功能。下面看代码:

<Script>
		//这种方法可以实现多继承,但是在进行操作时要注意
		//被继承对象的属性名不可以重复。
		function fun1() {
   			window.fun2.call(this);
			window.fun3.apply(this,["play","mm"]);
   		}
   		function fun2() {
   			this.name = "兰博基尼";
   			this.run = function() {
   				alert("我能跑");
   			};
   		}
		function fun3(play,name) {
			this.play = play;
			this.name = name;
		}
   	var car = new fun1();
   	alert(car.name);
	alert(car.play);
   	car.run();
</Script>






猜你喜欢

转载自blog.csdn.net/leng1235/article/details/48275447