تعریف شی (Object Definitions)
در جاوااسکریپت، «شی (Object)» یک ظرف از ویژگی هاست. هر ویژگی یک «کلید:مقدار» دارد. مثل کارت دانش آموزی با نام و سن.
ساخت شی با لیترال (Object Literal)
لیترال یعنی نوشتن شی داخل آکولاد { }. خوانا و سریع است.
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
ساخت شی با new Object()
روش new هم همان کار را می کند. اما ساده تر، لیترال است.
const person = new Object({
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
});
نکته: برای خوانایی و سرعت، از لیترال استفاده کن.
Object.create(): ساخت از روی شی موجود
با create می توان شی جدیدی ساخت که از شی قبلی می خواند.
const person = {
firstName: "John",
lastName: "Doe"
};
const man = Object.create(person);
man.firstName = "Peter";
Object.fromEntries(): ساخت از جفت های کلید/مقدار
fromEntries جفت های کلید/مقدار را به شی تبدیل می کند.
const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);
Object.assign(): ادغام ویژگی ها
assign ویژگی های منبع را به هدف کپی می کند. منابع بعدی می توانند روی قبلی ها بنویسند.
const person1 = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
const person2 = {
firstName: "Anne",
lastName: "Smith"
};
Object.assign(person1, person2);
اشیاء Mutable و ارجاعی
اشیاء با ارجاع شناخته می شوند. کپی متغیر، کپی شی نیست. هر دو به یک آدرس اند.
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
const x = person;
x.age = 10;
گام های تمرینی
- با لیترال یک شی دانش آموز بساز.
- با assign نام و سن را به آن اضافه کن.
- با create شی ای مشابه بساز و یک فیلد عوض کن.
برای ادامه مسیر، سر بزن به تعریف شی جاوااسکریپت، سپس سازنده شی و Closureها.
جمع بندی سریع
- لیترال، ساده و سریع است.
- assign برای ادغام ویژگی هاست.
- create از شی موجود می سازد.
- fromEntries آرایه جفت ها را شی می کند.
- اشیاء ارجاعی و قابل تغییرند.