Dojo拡張javascriptコアライブラリ-組み合わせ、構造化と複製オブジェクト
1886 ワード
Javascriptプログラムを書く時、一つのオブジェクトの属性を他のオブジェクトにコピーすることが多いかもしれません.Dojoはこれらの操作を簡略化しました.
1.混合オブジェクト
dojo.mixin(destination Obj,srccebj 1,srcceObj 2,…)
このコピーは値付け操作によって行われます.したがって、数字、ブール、文字列ベースのデータタイプは値でコピーされます.他のタイプは参照でコピーされます.
srcuObjの属性名がdestination Objの属性名と重複すると、srccebjの属性の値はdestination Objに対応する属性値をカバーし、
複数のSrcurObjの中に同じ属性がある場合、その値は一番右側のSrcurObj.propの値を取る.
例1:
2.コピー対象
上記の方法は数字、ブール、文字列という基本的なデータタイプが値でコピーされています.他のタイプはすべて値でコピーしたい場合、次の方法が必要です.
dojo.clone(srcebj)
例:
dojo.mixinのような方法ではなく、コピーしただけです. kingdomsOf Disccoveryは引用する代わりに、全く同じオブジェクトを新規に作成しました.
1.混合オブジェクト
dojo.mixin(destination Obj,srccebj 1,srcceObj 2,…)
このコピーは値付け操作によって行われます.したがって、数字、ブール、文字列ベースのデータタイプは値でコピーされます.他のタイプは参照でコピーされます.
srcuObjの属性名がdestination Objの属性名と重複すると、srccebjの属性の値はdestination Objに対応する属性値をカバーし、
複数のSrcurObjの中に同じ属性がある場合、その値は一番右側のSrcurObj.propの値を取る.
例1:
var destinationObj = {
name: "javascript"
};
dojo.mixin(destinationObj, {name: "dojo"});
console.log(destinationObj.name); // Output: dojo
dojo.mixin(destinationObj, {name: "dojo"}, {name: "dojo 1.7"});
console.log(destinationObj.name); // Output: dojo 1.7
例2(dojo.mixinは、srccebj prototype chainのすべてのオブジェクトの属性をdestination Objに混合し、Object.protoytpeの属性を除く):function SrcObj() {} // constructor
var protoObj = {
name: "prototype's prop"
};
SrcObj.prototype = protoObj;
var destinationObj = {
name: "javascript"
};
dojo.mixin(destinationObj, new SrcObj());
console.log(destinationObj.name); // Output: prototype's prop
SrcurObj.prototype.nameをdestination Objに混ぜてnameをカバーしているのが見えます.2.コピー対象
上記の方法は数字、ブール、文字列という基本的なデータタイプが値でコピーされています.他のタイプはすべて値でコピーしたい場合、次の方法が必要です.
dojo.clone(srcebj)
例:
var kingdomsOfDiscovery = {
city: "Dalian",
country: "China"
};
var attraction = {
name: "Dalian Discoveryland Theme Park",
location: kingdomsOfDiscovery
};
var testClone = dojo.clone(attraction);
上のコードはtestClone変数にアトラクションをクローンしました.testCloneには新しいものがあります.独立していますが、匿名のkingdomsOfDisccoveryオブジェクトです.dojo.mixinのような方法ではなく、コピーしただけです. kingdomsOf Disccoveryは引用する代わりに、全く同じオブジェクトを新規に作成しました.