js繼承所有方式

2021-08-14 16:41:06 字數 2049 閱讀 6692

/**

* call繼承

* 缺點:無法繼承父類原型物件

*/function parent1()

parent1.prototype.say=function()

function child1()

var child1=new child1();

console.log(child1);

/**

* 原型繼承

* 缺點:當子類例項物件改變父類屬性時,其他子類該屬性也會受影響

*/function parent2()

parent2.prototype.say=function()

parent2.prototype.getname=function()

function child2()

child2.prototype=new parent2;

var child2=new child2();

var child21=new child2();

console.log(child2.arr,child21.arr);

child2.arr.push(4);

console.log(child2.arr,child21.arr);

/**

* 組合繼承

* 缺點,重複呼叫了一次父類建構函式

*/function parent3()

parent3.prototype.say=function()

parent3.prototype.getname=function()

function child3()

child3.prototype=new parent3();

var child3=new child3();

var child31=new child3();

console.log(child3.arr,child31.arr);

child3.arr.push(4);

console.log(child3.arr,child31.arr);

/**

* 組合繼承改進1

* 缺點,子類建構函式指向錯誤,可手動修復

*/function parent4()

parent4.prototype.say=function()

parent4.prototype.getname=function()

function child4()

child4.prototype=parent4.prototype;

child4.prototype.constructor=child4; //手動修復constructor指向問題

var child4=new child4();

var child41=new child4();

console.log(child4.arr,child41.arr);

child4.arr.push(4);

console.log(child4.arr,child41.arr);

/**

* 組合繼承改進2,同上

*/function parent5()

parent5.prototype.say=function()

parent5.prototype.getname=function()

function child5()

child5.prototype=object.create(parent5.prototype);

child5.prototype.constructor=child5;

var child5=new child5();

var child51=new child5();

console.log(child5.arr,child51.arr);

child5.arr.push(5);

console.log(child5.arr,child51.arr);

建立物件的所有方式

第一種 直觀方式 var o 大部分教材和 都叫這種方式是 字面量 方式,我只能說我語文不好,完全不知道字面量在說什麼。第二種 構造方式 var o new object object是一種資料型別,它最偉大的作用就是能生娃。它生的娃通常被叫做 例項 高程 object是所有它的例項的基礎,換句話說...

獲取js物件所有方法

1 物件內建屬性方法 object.keys 該方法返回乙個陣列,陣列內包括物件內可列舉屬性以及方法名稱。陣列中屬性名的排列順序和使用for.in遍歷該物件時返回的順序一致。通過呼叫object.keys 方法,獲取物件上已定義 可列舉 的屬性和方法 var keys object.keys tes...

js陣列的所有方法

修改器方法 下面的這些方法會改變呼叫它們的物件自身的值 array.prototype.copywithin 在陣列內部,將一段元素序列拷貝到另一段元素序列上,覆蓋原有的值。array.prototype.fill 將陣列中指定區間的所有元素的值,都替換成某個固定的值。array.prototype...