আপনি যে নির্দিষ্ট ক্ষেত্রে দেখান, কার্যকারিতা বা দৃশ্যমানতার দিক থেকে কোনও অর্থপূর্ণ পার্থক্য নেই।
সম্ভবত সম্ভবত আসল কোডারটি এই পদ্ধতির এক ধরণের টেম্পলেট হিসাবে গ্রহণ করেছিলেন যা তাকে ব্যক্তিগত ভেরিয়েবলগুলি সংজ্ঞায়িত করতে দেয় যা এই জাতীয় জিনিসের সংজ্ঞা হিসাবে ব্যবহৃত হতে পারে myFunction
:
var MyObject = {};
(function(root) {
var seconds_per_day = 24 * 60 * 60;
root.myFunction = function(foo) {
return seconds_per_day;
};
})(MyObject);
এটি seconds_per_day
বিশ্বব্যাপী সুযোগকে দূষিত করা থেকে দূরে রাখার সাথে সাথে ফাংশনটি ডাকা প্রতিটি সময় গণনা করা এড়ায়।
যাইহোক, মূলত এর থেকে আলাদা এবং কেবল বলার মতো কিছুই নেই
var MyObject = function() {
var seconds_per_day = 24 * 60 * 60;
return {
myFunction: function(foo) {
return seconds_per_day;
}
};
}();
মূল কোডার root.myFunction = function
এর অবজেক্ট / প্রপার্টি সিনট্যাক্সের পরিবর্তে এর ঘোষণামূলক বাক্য গঠন ব্যবহার করে অবজেক্টে ফাংশন যুক্ত করতে সক্ষম হতে পারে myFunction: function
। তবে সেই পার্থক্যটি মূলত পছন্দের বিষয়।
তবে মূল কোডার দ্বারা গৃহীত কাঠামোর সুবিধা রয়েছে যে বৈশিষ্ট্য / পদ্ধতিগুলি কোডের অন্য কোনও জায়গায় সহজেই যুক্ত করা যায়:
var MyObject = {};
(function(root) {
var seconds_per_day = 24 * 60 * 60;
root.myFunction = function(foo) {
return seconds_per_day;
};
})(MyObject);
(function(root) {
var another_private_variable = Math.pi;
root.myFunction2 = function(bar) { };
})(MyObject);
নীচের লাইন, আপনার প্রয়োজন না হলে এই পদ্ধতির অবলম্বন করার দরকার নেই, তবে এটি পরিবর্তন করারও দরকার নেই, কারণ এটি পুরোপুরি ভালভাবে কাজ করে এবং এর কিছু সুবিধা রয়েছে।