/**
* 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...