আপনি এটি এইভাবে করতে পারে
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
এই পদ্ধতিটি আমার পক্ষে কার্যকর প্রমাণিত হয়েছে যখন আমাকে কোনও ফাংশনটি মূলত ঘোষিত অবজেক্টটির উল্লেখ করতে হয়েছিল। নীচে আমি এটি কীভাবে ব্যবহার করেছি তার একটি ন্যূনতম উদাহরণ:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
মুদ্রণ ফাংশন ধারণ করে এমন বস্তু হিসাবে নিজেকে সংজ্ঞায়িত করে আপনি ফাংশনটিকে সেই অবজেক্টটি উল্লেখ করার অনুমতি দিন। এর অর্থ আপনি যদি অন্য কোনও জায়গায় এটির প্রয়োজন হয় তবে আপনাকে মুদ্রণ ফাংশনটির সাথে কোনও আবদ্ধ করতে হবে না।
আপনি যদি পরিবর্তে this
নীচে চিত্রিত হিসাবে ব্যবহার করেন
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
তারপরে নীচের কোডটি 0, 1, 2 লগ করবে এবং তারপরে একটি ত্রুটি দেবে
var o = createMyObject()
var log = o.a.log
o.a.log().log() // this refers to the o.a object so the chaining works
log().log() // this refers to the window object so the chaining fails!
স্ব-পদ্ধতি ব্যবহার করে আপনি গ্যারান্টি দেন যে মুদ্রণটি ফাংশনটি যে প্রসঙ্গে চালিত হয়েছে তা নির্বিশেষে সর্বদা একই জিনিসটি ফিরে আসবে। উপরের কোডটি ঠিক সূক্ষ্মভাবে চলবে এবং এর স্ব সংস্করণ ব্যবহার করার সময় 0, 1, 2 এবং 3 লগ করবে createMyObject()
।