javascript---對象繼承方式

  1. 對於初學這來說,掌握對象的繼承方式是必修課,今天就在這裏給大家總結下對象的幾種繼承方式。
  2. 在學習對象的繼承方式之前,需要了解什麼是原型及原型鏈的概念,不知道的話先去惡補下吧。
  3. js並不是一門面向對象的語言,沒有類class的概念,在js中使用構造方法代替類class,實現模擬面向的對象編程方式。

第一種方式-----原型鏈繼承

原型鏈繼承:子構造方法的原型指向父構造方法的實例。

                        //聲明父級構造函數
			function Parent(name){
				this.name = name;
			}
			//添加父級構造方法的原型屬性
			Parent.prototype.age = 18;
			//實例化父級對象
			var p = new Parent("小明");
			//聲明子級構造函數
			function Son(){}
			//將子級的構造函數的原型指向父級的實例
			Son.prototype = p;
			//創建子級的實例對象
			var s = new Son();
			//測試
			console.log(s.name)//小明
			console.log(s.age)//18

缺點:父級在實例化過程中必須傳入參數,這樣子級得到的屬性值是確定的,得到的結果如不是自己想要的,還要手動更改。

第二種繼承方式:借用構造函數

                        //聲明父級構造函數
			function Parent(name){
				this.name = name;
			}
			//聲明子級構造函數
			function Son(name){
				Parent.call(this,name)
			}
			//創建子級的實例對象
			var s = new Son("小明");
			//測試
			console.log(s.name)//小明

優點:這種方式可以根據需求傳入值,以得到不同的屬性值

缺點:因爲只是借用了父級的構造方法,給實例對象添加屬性。並不能繼承父級原型中的屬性。

第三種方式:聖盃模式--結合原型鏈和借用構造函數

將需要傳入參數,初始化的對象屬性,通過借用構造方法繼承.不需要初始化的屬性,放在父構造函數的原型中,通過原型鏈繼承.

   //聲明父級構造函數
			function Parent(name){
				this.name = name;
			}
//添加父級構造方法的原型屬性
			Parent.prototype.age = 18;
//實例化父級對象----不傳入參數
			var p = new Parent();
//聲明子級構造函數
			function Son(name){
				//借用父級構造函數
				Parent.call(this,name);
			}
//將子級的構造函數的原型指向父級的實例
			Son.prototype = p;
//創建子級的實例對象
			var s = new Son("小明");
			//測試
			console.log(s.name)//小明
			console.log(s.age)//18

完美實現初始化實例屬性,繼承所有數據。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章