تطوير المواقع الإلكترونية MEAN-Stack from A to Z الأساسيات Level1
يمكن إعتبار الـ object علي أنه إستحداث datatype جديد properties و methods جديدة, فمثلا لو كنا نريد التعامل مع بيانات تلاميذ فهناك بعض الخصائص المشتركة للتلاميذ و أيضا هناك بعض الـ methods التي تطبق عليها , مثلا لكل تلميذ هناك الاسم , العمر, العنوان, رقم الصف فهل من المنطقي أن نقوم بعمل متغيرات لكل هذه الصفات و لكل تلميذ مثلا
Code
let student1Nmae = "Ahmed Zayed";
let student1Age= 10;
let student1Address='Cairo';
let student1GradeNO = '4';
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4
}
console.log(student.name);
console.log(student['name']);
أيضا يمكننا زيادة أي خاصية فيما بعد مثل:
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4
}
student.id=5;
console.log(student.id);
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4,
SayHello:function(){
return 'hello student'
}
}
console.log(student.SayHello());
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4,
SayHello:function(){
return 'hello ' + student.name
}
}
console.log(student.SayHello());
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4,
SayHello:function(){
return 'hello ' + student.name
}
}
let student2 = Object.create(student);
student2.name = 'omar';
console.log(student2.name);
console.log(student2.SayHello());
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4,
SayHello:function(){
return 'hello ' + this.name
}
}
let student2 = Object.create(student);
student2.name = 'omar';
console.log(student2.name);
console.log(student2.SayHello());
Code
let student={
name:'Ahmed Zayed',
age:10,
address:'cairo',
gradeNo:4,
SayHello:function(){
return 'hello ' + this.name
}
}
let student2 = Object.create(student,{
isActive:{value:true},
gender:{value:'male'}});
console.log(student2);
Code
let o1={p1:1}
let o2={p2:2}
let o3={p3:3}
let o4=Object.assign(o1,o2,o3);
console.log(o4);
Code
const frozenObject = Object.freeze({ name: 'Frozen' });
frozenObject.name = 'New Name'; // This will not work
console.log(frozenObject.name); // Output: Frozen
Code
const sealedObject = Object.seal({ name: 'Sealed' });
sealedObject.newProp = 'new'; // This will not work
sealedObject.name = 'Updated Name'; // This works
console.log(sealedObject.name); // Output: Updated Name
Code
const propName = 'dynamicProp';
const obj = {
[propName]: 'My Value'
};
console.log(obj.dynamicProp); // Output: My Value
Code
const prefix = 'user_';
const userId = 123;
const user = {
[`${prefix}${userId}`]: 'Ali'
};
console.log(user['user_123']); // Output: Ali
الـ Destructuring
و هى خاصية هامة في الجافاسكريبت كما ذكرنا من قبل في الـ arrays يمكن استخدامها أيضا مع الـ object و هي ببساطة تعيين متغيرات جديدة من Object موجود مثل:
Code
const user = { name: 'Ali', age: 25 };
const { name, age } = user;
console.log(name); // Output: Ali
console.log(age); // Output: 25
Code
const user = { name: 'Ali', age: 25 };
const { name: userName, age: userAge } = user;
console.log(userName); // Output: Ali
console.log(userAge); // Output: 25
Code
const user = { name: 'Ali' };
const { name, age = 30 } = user;
console.log(name); // Output: Ali
console.log(age); // Output: 30 (default value)
Code
const user = { name: 'Ali',age:25 };
const { name, age = 30 } = user;
console.log(name); // Output: Ali
console.log(age); // Output: 25
Code
const user = {
name: 'Ali',
address: {
city: 'Cairo',
zip: '12345'
}
};
const { address: { city, zip } } = user;
console.log(city); // Output: Cairo
console.log(zip); // Output: 12345
Code
function greet({ name, age }) {
console.log(`Hello, my name is ${name} and I am ${age} years old.`);
}
const user = { name: 'Ali', age: 25 };
greet(user); // Output: Hello, my name is Ali and I am 25 years old.
Code
function greet(user) {
const {name,age} = user;
console.log(`Hello, my name is ${name} and I am ${age} years old.`);
}
const user = { name: 'Ali', age: 25 };
greet(user); // Output: Hello, my name is Ali and I am 25 years old.
Code
const users = [
{ name: 'Ali', age: 25 },
{ name: 'Omr', age: 30 }
];
for (const { name, age } of users) {
console.log(`${name} is ${age} years old.`);
}
// Output:
// Ali is 25 years old.
// Omr is 30 years old.
الـ Spread Syntax
كما في الـ array يمكن استخدامها في العديد من الحالات للتعامل مع الـ Objects مثل: إنشاء object جديد من object قديم مثل الكود التالي:
Code
const original = { a: 1, b: 2 };
const copy = { ...original };
console.log(copy); // Output: { a: 1, b: 2 }
console.log(copy === original); // Output: false (different references)
Code
const original = { a: 1, b: 2 };
const copy = { ...original };
copy.a=10;
console.log(copy); // Output: { a: 10, b: 2 }
console.log(original); // Output: { a: 1, b: 2 }
Code
const original = { a: 1, b: 2 };
const copy = original;
copy.a=10;
console.log(copy); // Output: { a: 10, b: 2 }
console.log(original); // Output: { a: 10, b: 2 }
Code
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const merged = { ...obj1, ...obj2 };
console.log(merged); // Output: { a: 1, b: 3, c: 4 }
Code
const user = { name: 'Ali', age: 25 };
const updatedUser = { ...user, age: 26,city:'Cairo' };
console.log(updatedUser); // Output: { name: 'Ali', age: 26 }
console.log(user); // Output: { name: 'Ali', age: 25 } (original object remains unchanged)
Code
const condition = true;
const base = { a: 1, b: 2 };
const conditionalProps = condition ? { b: 3, c: 4 } : { b: 2, d: 5 };
const result = { ...base, ...conditionalProps };
console.log(result); // Output: { a: 1, b: 3, c: 4 }
Code
const user = { name: 'Ali', age: 25, location: 'Cairo' };
const { name, ...details } = user;
console.log(name); // Output: Ali
console.log(details); // Output: { age: 25, location: 'Cairo' }
Code
function createConfig(userConfig) {
const defaultConfig = { timeout: 5000, retries: 3 };
return { ...defaultConfig, ...userConfig };
}
const config = createConfig({ retries: 5, verbose: true });
console.log(config); // Output: { timeout: 5000, retries: 5, verbose: true }


