1. 程式人生 > >js中組合方式實現繼承例項

js中組合方式實現繼承例項

要點:

1.js非高階語言,而是一本輕量級的指令碼語言,本身沒有繼承的特性。但是,開發實踐中,利用繼承可以節省大量重複的物件的屬性和方法的定義,所以基於原型,達到曲線繼承。

2. 若直接修改原型的指向,如果建構函式需要接收值他們的引數是一致的,那麼初始化得到的物件屬性值都相同,想要修改只能通過例項物件的原型來修改,比較麻煩。

    若使用借用建構函式的方式來完成初始化,那麼初始化的例項物件無法使用被繼承物件的方法(通過.call(當前物件,引數1,引數2,引數3等))。

   結合以上,得到第一種組合方式來達到繼承效果。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>

	<script type="text/javascript">
		function Person(name,qq){
			this.name = name;
			this.qq = qq;
		}
		Person.prototype.show = function(){
			console.log("陳小帥是真的帥");
		}
		function Student(name,qq,num){
			Person.call(this,name,qq);
			this.num = num;
			// 借用建構函式,通過.call(當前物件,引數1,引數2,引數3等);	
		}

		Student.prototype = new Person();

		Student.prototype.say = function(){
			console.log("沒錯我就是陳小帥")
		}

		var stu = new Student("陳帥帥",2323010676,160720131);
		console.log(stu.name,stu.qq,stu.num);
		stu.show();
		stu.say();

	</script>
	
</body>
</html>