यह समाधान एक नया बनाता है ऑब्जेक्ट और एकाधिक ऑब्जेक्ट को संभालने में सक्षम है।
इसके अलावा, यह पुनरावर्ती है और आप मौसम आप चाहते हैं को अधिलेखित मान और वस्तुओं चुन सकते हैं।
function extendObjects() {
var newObject = {};
var overwriteValues = false;
var overwriteObjects = false;
for (var indexArgument = 0; indexArgument < arguments.length; indexArgument++) {
if (typeof arguments[indexArgument] !== 'object') {
if (arguments[indexArgument] == 'overwriteValues_True') {
overwriteValues = true;
} else if (arguments[indexArgument] == 'overwriteValues_False') {
overwriteValues = false;
} else if (arguments[indexArgument] == 'overwriteObjects_True') {
overwriteObjects = true;
} else if (arguments[indexArgument] == 'overwriteObjects_False') {
overwriteObjects = false;
}
} else {
extendObject(arguments[indexArgument], newObject, overwriteValues, overwriteObjects);
}
}
function extendObject(object, extendedObject, overwriteValues, overwriteObjects) {
for (var indexObject in object) {
if (typeof object[indexObject] === 'object') {
if (typeof extendedObject[indexObject] === "undefined" || overwriteObjects) {
extendedObject[indexObject] = object[indexObject];
}
extendObject(object[indexObject], extendedObject[indexObject], overwriteValues, overwriteObjects);
} else {
if (typeof extendedObject[indexObject] === "undefined" || overwriteValues) {
extendedObject[indexObject] = object[indexObject];
}
}
}
return extendedObject;
}
return newObject;
}
var object1 = { a : 1, b : 2, testArr : [888, { innArr : 1 }, 777 ], data : { e : 12, c : { lol : 1 }, rofl : { O : 3 } } };
var object2 = { a : 6, b : 9, data : { a : 17, b : 18, e : 13, rofl : { O : 99, copter : { mao : 1 } } }, hexa : { tetra : 66 } };
var object3 = { f : 13, g : 666, a : 333, data : { c : { xD : 45 } }, testArr : [888, { innArr : 3 }, 555 ] };
var newExtendedObject = extendObjects('overwriteValues_False', 'overwriteObjects_False', object1, object2, object3);
newExtendedObject की सामग्री:
{"a":1,"b":2,"testArr":[888,{"innArr":1},777],"data":{"e":12,"c":{"lol":1,"xD":45},"rofl":{"O":3,"copter":{"mao":1}},"a":17,"b":18},"hexa":{"tetra":66},"f":13,"g":666}
फिडल: http://jsfiddle.net/o0gb2umb/
स्रोत का उपयोग, ल्यूक :) – epoch
वहाँ एक वेबसाइट है कि वास्तव में jQuery के स्रोत की जाँच के साथ मदद करता है है। 'JQuery.extend' के लिए, [यहां आप जाते हैं] (http://james.padolsey.com/jquery/#v=git&fn=jQuery.extend)। –
मुझे पूछने से पहले एक नजर आया लेकिन विस्तार() फ़ंक्शन से बाहरी निर्भरताएं हैं इसलिए कुछ पंक्तियों की प्रतिलिपि बनाने के बजाय और अधिक काम करना है। – Borek