JS通過原型實現多重繼承

2021-09-01 14:14:25 字數 1694 閱讀 9254

/* 

* 宣告乙個動物型別

*/ function animal(){}

// 為動物類建立乙個aname屬性

animal.prototype.aname = "動物";

// 為動物類建立乙個吼叫的方法

animal.prototype.howl = function(word)

console.log("我是" + this.aname + ",我想說"+word);

};

/** 宣告乙個狗類

*/ function dog(){}

// 設定狗類繼承動物類

dog.prototype = new animal();

// 設定superclass儲存父類的方法屬性

dog.prototype.superclass = new animal();

// 設定狗類的aname屬性

dog.prototype.aname = "狗類";

// 設定鳥類自己的 howl 方法

dog.prototype.howl = function();

/**

* 宣告乙個柯基類

*/ function keji(){}

// 設定柯基類繼承狗類

keji.prototype = new dog();

// 設定superclass儲存父類的方法屬性

keji.prototype.superclass = new dog();

keji.prototype.howl = function()

// 例項化乙個柯基物件:"推土基"

var tuituji = new keji();

// 呼叫自身原型的howl方法

tuituji.howl(); // --> "我是柯基"

// 呼叫父類dog的howl方法

tuituji.superclass.howl(); // --> "這裡是dog類的howl方法!"

// 直接呼叫最大的父類animal的howl方法(方法中的this指向animal)

tuituji.superclass.superclass.howl("我是乙隻柯基"); // --> "我是動物類,我想說我是乙隻柯基"

// 用call呼叫最大的父類animal的howl方法(方法中的this指向tuituji,但此時tuituji並沒有aname屬性,所以this.name用的是dog的aname)

tuituji.superclass.superclass.howl.call(tuituji,"我是乙隻柯基"); // --> "我是狗類,我想說我是乙隻柯基"

// 給當前物件增加aname屬性

tuituji.aname = "推土基";

// 還是用call呼叫最大父類animal的howl方法(此時tuituji物件中已經有aname屬性);

tuituji.superclass.superclass.howl.call(tuituji,"我是乙隻柯基"); // --> "我是推土基,我想說我是乙隻柯基"

js原型實現繼承

繼承是一種關係,類與類之間的關係,但是js中沒有類,所以通過建構函式來模擬類,然後通過原型來實現繼承。繼承也是原型的第二個作用,同樣是為了資料共享,原型中實現繼承其實就是改變物件的原型指向 寫法 建構函式名字.call 當前物件,屬性,屬性,屬性。案例 具體 如下 function person n...

C 通過介面實現多重繼承

using system using system.collections.generic using system.text 通過介面實現多重繼承 namespace inte cedemo public bool ismale inte ce teacher 定義介面 inte ce docto...

js繼承(一)原型繼承

正式開工了 繼承在js中有著很大的地位,同時理解起來也比較抽象,我將分幾篇部落格來記錄js的繼承。原型繼承 相當於將父類物件與子類物件打通橋梁,可以靈活實現追加屬性與行為 子類擁有父類的一切行為和屬性。特點 非常純粹的繼承關係,例項是子類的例項,也是父類的例項 父類新增原型方法 原型屬性,子類都能訪...