সমস্যা বিবরণ
দুটি অবজেক্ট a এবং b দেওয়া আছে। একটি নতুন অবজেক্ট তৈরি করতে হবে যাতে দুটির প্রপার্টি এবং মেথড দুটোই থাকে। মূল অবজেক্টগুলো অপরিবর্তিত থাকবে।
ইনপুট:
const a = {
a: 1,
af: function() { console.log(this.a) },
};
const b = {
b: 2,
bf: function() { console.log(this.b) },
};
প্রত্যাশিত আউটপুট:
const output = {
a: 1,
af: function() { console.log(this.a) },
b: 2,
bf: function() { console.log(this.b) },
};
সমাধান
const a = {
a: 1,
af: function() { console.log(this.a) },
};
const b = {
b: 2,
bf: function() { console.log(this.b) },
};
const extend = function() {
let i, j, x, res = (arguments[0] || {});
for (i = 1; i < arguments.length; i++) {
const x = arguments[i];
for (j in x) {
if (x.hasOwnProperty(j)) {
res[j] = x[j];
}
}
}
return res;
};
const c = extend({}, a, b);
console.log(c);
আউটপুট
{ a: 1, af: [Function: af], b: 2, bf: [Function: bf] }
আধুনিক বিকল্প
আধুনিক জাভাস্ক্রিপ্টে Object.assign({}, a, b) বা স্প্রেড অপারেটর {...a, ...b} ব্যবহার করা সহজ ও কার্যকর।