Code :
//todo: 1. withot using pointer
let n1 = 5;
let n2 = n1;
console.log("n1=", n1, " and n2=", n2);
n1 = 100;
console.log("n1=", n1, " and n2=", n2);
//output
//n1= 5 and n2= 5
//n1= 100 and n2= 5
------------------------------------
//todo: 2. using pointer{object}
/*
obj1 ↘️
{value:11}
obj2 ↗️
*/
let obj1 = {
value: 11, // obj1 -> {value:11}
};
let obj2 =obj1;
console.log(obj1.value, obj2.value); // 11 11
obj1.value =22;
console.log(obj1.value, obj2.value); // 22 22
Pointer:
In javascript we implement this using object
পয়েন্টার সম্পর্কে
পয়েন্টারগুলি বোঝা গুরুত্বপূর্ণ কারণ আমরা সমস্ত ডেটা স্ট্রাকচারে এগুলি ব্যবহার করব। যদি আপনি ইতিমধ্যে পয়েন্টারগুলি বুঝে থাকেন, তবে আপনি এই অংশটি বাদ দিতে পারেন।
পয়েন্টার ছাড়া ভেরিয়েবল
আসুন প্রথমে এমন একটি উদাহরণ দেখি যা পয়েন্টার ব্যবহার করে না:
let numOne = 5; // numOne ভেরিয়েবল তৈরি করুন এবং 5 মান দিন
let numTwo = numOne; // numTwo ভেরিয়েবল তৈরি করুন এবং numOne এর মান দিন
পয়েন্টার ছাড়া ভেরিয়েবলের আচরণ
যখন আমরা উপরের কোডটি চালাই, তখন দেখা যায়:
-
numOneএর মান 5। -
numTwoএরও মান 5।
এখন, যদি আমরা numOne পরিবর্তন করি:
numOne = 10; // numOne এর মান 10 এ পরিবর্তন করুন
- এখন,
numOneএর মান 10, কিন্তুnumTwoএখনও 5।
এটি ঘটে কারণ যখন আমরা numTwo কে numOne এর সমান করি, তখন এটি সেই মুহূর্তে মানটি কপি করে। numOne পরিবর্তিত হলে numTwo প্রভাবিত হয় না।
পয়েন্টার সহ ভেরিয়েবল
এখন, আসুন দেখি কীভাবে পয়েন্টারগুলি অবজেক্টগুলির সাথে কাজ করে:
let objectOne = { value: 11 }; // একটি অবজেক্ট তৈরি করুন এবং objectOne এ অ্যাসাইন করুন
let objectTwo = objectOne; // objectTwo কে objectOne এর সমান করুন
পয়েন্টার সহ ভেরিয়েবলের আচরণ
যখন আমরা এই কোডটি চালাই:
-
objectOneএবংobjectTwoউভয়ই একই অবজেক্টের দিকে নির্দেশ করে।
যদি আমরা অবজেক্টটির মান পরিবর্তন করি:
objectOne.value = 22; // objectOne দ্বারা নির্দেশিত অবজেক্টের মান পরিবর্তন করুন
- এখন
objectOne.valueএবংobjectTwo.valueউভয়ই 22।
পয়েন্টার স্থানান্তর
আমরা একটি অবজেক্টের দিকে নির্দেশক স্থানান্তর করতে পারি:
let objectThree = { value: 33 }; // আরেকটি অবজেক্ট তৈরি করুন
objectTwo = objectThree; // এখন, objectTwo objectThree এর দিকে নির্দেশ করবে
এখন:
-
objectTwoএকটি ভিন্ন অবজেক্ট (objectThree) এর দিকে নির্দেশ করছে, যখনobjectOneএখনও মূল অবজেক্টের দিকে নির্দেশ করছে যার মান 22।
মেমরি ব্যবস্থাপনা এবং গার্বেজ কালেকশন
যদি একটি অবজেক্টকে আর কোনও ভেরিয়েবল দ্বারা নির্দেশিত না হয়, তবে এটি অপ্রাপ্য হয়ে যায়। উদাহরণস্বরূপ:
let unusedObject = { value: 44 }; // একটি অপ্রয়োজনীয় অবজেক্ট তৈরি করুন
unusedObject = null; // এখন এটি আর কোনও ভেরিয়েবল দ্বারা নির্দেশিত নয়
এখন, যেহেতু কোনও ভেরিয়েবল এই অবজেক্টকে নির্দেশ করছে না, এটি মেমরিতে স্থান দখল করছে কিন্তু ব্যবহৃত হচ্ছে না।
JavaScript সময়ে সময়ে এই ধরনের জিনিস পরিষ্কার করবে একটি প্রক্রিয়া দ্বারা যা গার্বেজ কালেকশন নামে পরিচিত।
উপসংহার
পয়েন্টারগুলি আমাদের কোডে ডেটা পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। তারা আমাদেরকে একই অবজেক্টে একাধিক ভেরিয়েবলকে নির্দেশ করতে দেয় এবং মেমরি ব্যবস্থাপনায় সহায়তা করে। এই বিষয়গুলি বোঝা আপনাকে ডেটা স্ট্রাকচার এবং আরও জটিল প্রোগ্রামিং ধারণাগুলি বুঝতে সাহায্য করবে!

Top comments (0)