কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে পাস বাই রেফারেন্স ব্যাখ্যা


জাভাস্ক্রিপ্ট একটি পাস-বাই-ভ্যালু ল্যাঙ্গুয়েজ। কিন্তু অবজেক্টের জন্য, ভ্যালু হলো তাদের রেফারেন্স। তাই উদাহরণস্বরূপ, আপনি একটি int ফাংশনে প্যারামিটার হিসেবে পাস করুন এবং ফাংশনে এর মান ইনক্রিমেন্ট করলে, কলারের কনটেক্সটে এর মান আপডেট হবে না -

উদাহরণ

let i = 0; function increment(x) { x = x + 1 console.log(x) } increment(i) console.log(i)

আউটপুট

1 0

যখন আপনি একটি অবজেক্ট পাস করুন এবং ফাংশনের কনটেক্সটে সেই অবজেক্টের রেফারেন্স আপডেট করুন, তবে এটি অবজেক্টকে প্রভাবিত করবে না। কিন্তু আপনি যদি অবজেক্টের ইন্টারনাল মিউটেট করুন, তবে এটি অবজেক্টে প্রতিফলিত হবে।

উদাহরণ

let obj = {'foo': 'bar'}; function updateRef(x) { // x-এর লোকাল রেফারেন্স আপডেট হয়, obj প্রভাবিত হয় না x = {} } function addHelloWorld(y) { // y দ্বারা রেফারেন্সড অবজেক্টে নতুন প্রপার্টি যোগ y['hello'] = 'world'; } console.log(obj) updateRef(obj) console.log(obj) addHelloWorld(obj) console.log(obj)

আউটপুট

{ foo: 'bar' } { foo: 'bar' } { foo: 'bar', hello: 'world' }

লক্ষ্য করুন যে অবজেক্ট রেফারেন্স পরিবর্তন অবজেক্টকে প্রভাবিত করেনি। লোকাল ভেরিয়েবল x রি-অ্যাসাইন হয়েছিল। দ্বিতীয় ফাংশনে যেশন, y obj অবজেক্টকে রেফারেন্স করছিল এবং সেই অবজেক্টের ইন্টারনাল স্টেট মিউটেট করেছিল। এটি মূল অবজেক্টে পরিবর্তন আনল।


  1. জাভাস্ক্রিপ্টে Blob অবজেক্ট

  2. জাভাস্ক্রিপ্টে ডিপ ক্লোনিং অবজেক্ট উদাহরণসহ ব্যাখ্যা

  3. জাভাস্ক্রিপ্টে RegExp অবজেক্ট

  4. জাভাস্ক্রিপ্টে অবজেক্ট ইলিশিয়ালাইজার