یک سری نوعهای دادهای توی جاوااسکریپت مثل رشته، عدد و بولین دارای متد و پراپرتی هستن درحالیکه آبجکت نیستن. مثلا پراپرتی length توی همهی رشتهها هست یا متد toUpperCase:
var mein = "dein"; console.log(typeof mein); // string console.log(mein.length); // 4 console.log(mein.toUpperCase()); // DEIN
چرا اینطوری هستن؟ 🤔
دلیلش وجود آبجکتهای Wrapper هست. وقتی از نوعهای داده Primitive مثل رشته، عدد و بولین (بجز null و undefiend) یک پراپرتی یا متد رو فراخونی میکنیم، اون رشته یا عدد بطور موقت داخل یک آبجکت قرار میگیره. به این آبجکت موقت میگن Wrapper object. یعنی یک چیزی شبیه به این اتفاق میوفته:
var mein = "dein"; alert(new String(mein).toUpperCase()); // DEIN
به این ترتیب رشتهی ما شبیه به یک آبجکت میشه که شامل یک سری متدها و پراپرتیهای پرکاربرد هست. آبجکت Wrapper بعد از فراخونی پراپرتی یا متد از بین میرن.
منبع: