"foo"
একটি স্ট্রিং আদিম । (এই ধারণাটি সি # বা জাভাতে বিদ্যমান নেই)
new String("foo")
বক্সড স্ট্রিং অবজেক্ট।
===
অপারেটর প্রিমিটিভের এবং বস্তুর উপর ভিন্নভাবে আচরণ করবে ।
আদিমদের (একই ধরণের) তুলনা করার সময়, ===
যদি উভয়েরই একই মান হয় তবে সত্যটি ফিরে আসবে।
বস্তুর তুলনা করার সময়, ===
যদি তারা একই বস্তুকে (রেফারেন্সের সাথে তুলনা করে) উল্লেখ করে তবেই সত্যটি ফিরে আসবে। এইভাবে new String("a") !== new String("a")
,।
আপনার ক্ষেত্রে, ===
মিথ্যা ফেরত দেয় কারণ অপারেশনগুলি বিভিন্ন ধরণের হয় (একটি আদিম এবং অন্যটি একটি বস্তু)।
আদিমরা মোটেও বস্তু নয়। অপারেটর ফিরবে না প্রিমিটিভের জন্য।
typeof
"object"
আপনি যখন কোনও আদিম (কোনও বস্তু হিসাবে এটি ব্যবহার করে) কোনও সম্পত্তি অ্যাক্সেস করার চেষ্টা করবেন, জাভাস্ক্রিপ্ট ভাষা এটি একটি বস্তুর সাথে বাক্স করবে এবং প্রতিবার একটি নতুন অবজেক্ট তৈরি করবে। এটি স্পেসিফিকেশন বর্ণিত হয় ।
এ কারণেই আপনি আদিমগুলিতে সম্পত্তি রাখতে পারবেন না:
var x = "a";
x.property = 2;
alert(x.property)
প্রতিবার আপনি লেখার সময় x.property
একটি আলাদা বক্সযুক্ত String
অবজেক্ট তৈরি হবে।
foo
খাঁটি স্ট্রিং এবংnew String("foo")
এটি অবজেক্ট স্ট্রিং