Skip to content

Commit 1935ff0

Browse files
authored
minor fixes
because the original english article got updated.
1 parent 8ab1e48 commit 1935ff0

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

1-js/04-object-basics/02-object-copy/article.md

+26-14
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
# অবজেক্ট কপি করা, রেফারেন্স
1+
# অবজেক্ট রেফারেন্স এবং কপি করা
22

3-
অবজেক্ট এবং প্রিমিটিভ দের মধ্যে অন্যতম পার্থক্য হলো যে অবজেক্ট গুলি কপি ও সংরখ্যন হয় রেফারেন্স এর মাধ্যমে
3+
অবজেক্ট এবং প্রিমিটিভ দের মধ্যে অন্যতম পার্থক্য হলো যে অবজেক্ট গুলি কপি ও সংরখ্যন হয় রেফারেন্স এর মাধ্যমে, যেখানে প্রিমিটিভ মানঃ স্ট্রিং, বুলিয়ান, ইত্যাদি -- যেগুলো সবসময় "সম্পুর্ন মান" হিসেবে কপি হয়।
44

5+
একটি মান কপি করলে কি হয় তা একটু গভীরভাবে দেখলেই আমরা এটি আরো ভালোভাবে বুঝতে পারব।
56

6-
প্রিমিটিভ মান: স্ট্রিং, সংখ্যা, বুলিয়ানস - "সম্পূর্ণ মান হিসাবে" এসাইন/কপি করা হয়
7+
স্ট্রিং এর মত একটি প্রিমিটিভ নিয়েই শুরু করা যাক
78

8-
যেমন:
9+
এখানে আমরা `message` এর একটি কপি কে `phrase` এ রাখলামঃ
910

1011
```js
1112
let message = "Hello!";
@@ -16,21 +17,31 @@ let phrase = message;
1617

1718
![](variable-copy-value.svg)
1819

20+
খুব স্বাবাভিক ই মনে হচ্ছে, তাই না?
21+
1922
অবজেক্ট রা এমন নয়।
2023

21-
**একটি ভেরিএবল অবজেক্ট কে সংরক্ষণ করে না, বরং এর ঠিকানা সংরক্ষণ করে, অন্য কথায় এটির একটি "রেফারেন্স"।**
24+
**একটি অবজেক্ট এর জন্য নির্ধারিত ভেরিয়েবল সেই অবজেক্ট কে সংরক্ষণ করে না, বরং এর ঠিকানা সংরক্ষণ করে, অন্য কথায় এটির একটি "রেফারেন্স"।**
2225

23-
অবজেক্ট এর ছবিঃ
26+
এমন একটি ভেরিয়েবল এর উদাহরণ দেখা যাকঃ
2427

2528
```js
2629
let user = {
2730
name: "John"
2831
};
2932
```
3033

34+
এটি স্মৃতি তে কিভাবে সংরক্ষণ করা হয় তা নিচের ছবিতে দেখানো হলোঃ
35+
3136
![](variable-contains-reference.svg)
3237

33-
এখানে, বস্তুটি মেমোরির কোথাও সংরক্ষণ করা হয়েছে। এবং ভেরিয়েবল `user` এর কাছে এর রেফারেন্স আছে।
38+
অবজেক্ট টি স্মৃতির কোথাও সংরক্ষণ করা আছে (ডানে), আর `user` ভেরিয়েবল এর কাছে এর একটি রেফারেন্স আছে।
39+
40+
আমরা `user` এর মতো অবজেক্ট কে একটি কাগজের টুকরো হিসেবে ভাবতে পারি, যাতে ঠিকানা লেখা আছে ।
41+
42+
যখন আমরা অবজেক্ট এর উপরে কোন কাজ করি, যেমন `user.name` প্রপার্টি কে নেয়া, জাভাস্ক্রিপ্ট ইঞ্জিন ঠিকানা থেকে অবজেক্ট টি বের তার উপরে কাজ টি সম্পাদন করে ।
43+
44+
এটি গুরুতপুর্ন কারণ
3445

3546
**যখন কোনও বস্তুর ভেরিয়েবল কপি করা হয় - রেফারেন্সটি কপি হয়, বস্তুটি নকল হয় না ।**
3647

@@ -46,6 +57,8 @@ let admin = user; // রেফারেন্স কপি হলো
4657

4758
![](variable-copy-reference.svg)
4859

60+
আমরা দেখতে পাচ্ছি যে, অবজেক্ট একটাই আছে কিন্তু এখন একে দুটি ভেরিয়েবল রেফারেন্স করছে ।
61+
4962
আমরা এই দুটি ভেরিয়েবল এর যেকোনো টি ব্যাবহার করে অবজেক্ট টি এক্সেস করতে পারি ও এর ভেতরের কন্টেন্ট বা ডেটা গুলি পরিবর্তন করতে পারি।
5063

5164
```js run
@@ -60,15 +73,14 @@ admin.name = 'Pete'; // এডমিন রেফারেন্সের এর
6073
alert(*!*user.name*/!*); // 'Pete', পরিবর্তন টি "user" রেফারেন্স থেকে দেখা যাচ্ছে
6174
```
6275
63-
উপরের উদাহরণটি প্রমাণ করে যে এখানে কেবল একটি অবজেক্ট রয়েছে। যেন আমাদের একি কক্ষের দুটি চাবি আছে আর আমরা একটি চাবি (`admin`) দিয়ে কক্ষে প্রবেশ করেছি ও অন্যটি (`user`) দিয়ে কক্ষের ভেতরে উকি দিয়েছি।
6476
65-
## রেফারেন্স এর মাধ্যমে তুলনা
77+
উপরের উদাহরণটি প্রমাণ করে যে এখানে কেবল একটি অবজেক্ট রয়েছে। যেন আমাদের একি কক্ষের দুটি চাবি আছে আর আমরা একটি চাবি (`admin`) দিয়ে কক্ষে প্রবেশ করেছি। পরে অন্যটি (`user`) দিয়ে কক্ষের ভেতরে দেখেছি।
6678
67-
ইকুয়ালিটি `==` ও স্ট্রিক্ট ইকুয়ালিটি `===` দুটোই অবজেক্টের ক্ষেত্রে সমানভাবে কাজ করে।
79+
## রেফারেন্স এর মাধ্যমে তুলনা
6880
69-
**যদি দুটি অবজেক্ট একই বস্তু হয়, শুধুমাত্র তাহলেই তারা "ইকুয়াল"।**
81+
যদি দুটি অবজেক্ট একই বস্তু হয়, শুধুমাত্র তাহলেই তারা "ইকুয়াল"।
7082
71-
এখানে দুইটি ভেরিএবল একই অবজেক্ট কে রেফারেন্স করে, সুতরাং তারা ইকুয়াল:
83+
যেমন, এখানে `a` এবং `b` একই অবজেক্ট কে রেফারেন্স করে, সুতরাং তারা ইকুয়াল:
7284
7385
```js run
7486
let a = {};
@@ -78,7 +90,7 @@ alert( a == b ); // true, দুটি অবজেক্ট ই সমান
7890
alert( a === b ); // true
7991
```
8092
81-
আর এখানে দুটি অবজেক্ট সমান নয়, যদিও তারা দুজনই খালি :
93+
আর এখানে দুটি অবজেক্ট সমান নয়, যদিও তারা দেখতে একই (দুজনই খালি) :
8294
8395
```js run
8496
let a = {};
@@ -87,7 +99,7 @@ let b = {}; // দুটি স্বাধীন অবজেক্ট
8799
alert( a == b ); // false
88100
```
89101
90-
`obj1 > obj2` এর মত তুলনা এর জন্য অথবা কোন প্রিমিটিভ এর সাথে তুলনা করার জন্য `obj == 5`, অবজেক্ট কে প্রিমিটিভ এ রূপান্তর করা হয়। অবজেক্ট গুলোকে কিভাবে তুলনা করা হয় তা সম্পর্কে আমরা শিগ্রই জানব, কিন্তু সত্যি বলতে এই ধরনের তুলনা খুব কমই করা হয়, সাধারণত ভুলক্রমে।
102+
`obj1 > obj2` এর মত তুলনা এর জন্য অথবা কোন প্রিমিটিভ এর সাথে তুলনা করার জন্য `obj == 5`, অবজেক্ট কে প্রিমিটিভ এ রূপান্তর করা হয়। অবজেক্ট গুলোকে কিভাবে তুলনা করা হয় তা সম্পর্কে আমরা শিগ্রই জানব, কিন্তু সত্যি বলতে এই ধরনের তুলনা খুব কমই প্রয়োজন হয়, সাধারণত এগুলি ভুলক্রমে চলে আসে
91103
92104
## ক্লোন করা ও মিলিত করা, Object.assign
93105

0 commit comments

Comments
 (0)