// 寄生式繼承(聖杯)
father.prototype.name = 'hello' //在father類中新增乙個name屬性
function father() {} //構造father類
function son() {} //構造son類
var inherit = (function () //使用閉包產生私有函式
return function (father, son)
}())
inherit(father, son) //呼叫函式
son.prototype.age = 'world' //改變子類的原型(目的:測試父類原型與子類原型是否繫結)
var son = new son(); //例項化子類物件
var father = new father(); //例項化父類物件
console.log(son, father)
console.log(son.name, father.name); //此時父子類都有該屬性。列印(hello hello)
console.log(son.age, father.age) //子類獨有屬性,父類無此屬性。列印(world undefined)
function copyobj(org, tag) ; //初始化要複製的物件
for (var key in org) ;
} else
copyobj(org[key], tag[key])//再次執行函式
} else
}return tag; //遞迴結束後返回物件
}copyobj(obj, obj1)
obj.e.c.obj.z = 'world';//改變複製後的值觀察複製後的物件是否發生改變
function copyobj(org, tag) ; //初始化要複製的物件
var name = object.getownpropertynames(org); //獲取該物件的屬性名,以字串陣列返回
for (var i = 0; i < name.length; i++) : ; //判斷是陣列還是物件
object.defineproperty(tag, name[i], );
copyobj(desc.value, obj); //再次執行函式
} else
}return tag;
}copyobj(obj, obj1)
obj.e.c.obj.z = 'world'; //改變複製後的值觀察複製後的物件是否發生改變
js深複製淺複製
深淺複製主要是針對於js的引用資料型別的,因為他們不只一層,並且修改乙個變數是不希望修改到另外乙個變數。淺複製 只複製指向某個物件的指標,新舊物件共享一塊記憶體,修改新物件會改到原物件上。深複製 不共享記憶體,修改新物件不會改到原物件上。淺複製實現 js 簡單的賦值操作一般實現的都是淺複製。深複製實...
js中的淺複製和深複製
淺複製 淺複製是複製引用,複製後的引用都是指向同乙個物件的例項,彼此之間的操作會互相影響 深複製 深複製不是簡單的複製引用,而是在堆中重新分配記憶體,並且把源物件例項的所有屬性都進行新建複製,以保證深複製的物件的引用圖不包含任何原有物件或物件圖上的任何物件,複製後的物件與原來的物件是完全隔離的 ut...
JS深拷貝繼承
所謂深拷貝,就是子物件不緊繼承父物件的非引用屬性,還能繼承父物件的引用屬性 object,array 當子物件對繼承的引用型別屬性做修改時,父物件的引用型別不會被修改。我們先寫個淺拷貝的封裝函式 function extendcopy parent for var i in parent child...