Skip to content

Commit 0c26414

Browse files
committed
[LES-13.7/st-compl] enhance-obj-literals
Practice writing/enhancing obj literals, getting "shortened" notation. Worth noting: - this ES6 "syntactic sugar". FS-dev: B-3 / JS basic
1 parent f7d072a commit 0c26414

File tree

1 file changed

+81
-0
lines changed
  • full-stack-dev/3-js-basic/13-objects/13-7-enhance-obj-literals

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
// Задание 1:
2+
// Вот объект, написанный в "старом" стиле (до ES6).
3+
// const name = 'Laptop';
4+
// const price = 1200;
5+
//
6+
// const product = {
7+
// name: name,
8+
// price: price,
9+
// getInfo: function () {
10+
// return this.name + ' costs $' + this.price;
11+
// },
12+
// };
13+
// Перепиши объект product, применив все возможные улучшения для объектных литералов, которые мы обсудили.
14+
15+
const type = 'Laptop';
16+
const price = 1200;
17+
18+
const product = {
19+
type,
20+
price,
21+
getInfo() {
22+
return this.type + ', costs $' + this.price;
23+
},
24+
};
25+
26+
console.log(product.getInfo()); // "Laptop, costs $1200"
27+
28+
// Задание 2:
29+
// Напиши функцию createDynamicObject(key, value).
30+
// Эта функция должна принимать два аргумента: key (строка) и value (любое значение).
31+
// Она должна создать и вернуть новый объект, у которого:
32+
// 1. Имя свойства — это значение переменной key (используй вычисляемые имена свойств).
33+
// 2. Значение этого свойства — это значение переменной value.
34+
// 3. Также в объекте должно быть свойство createdAt со значением текущей даты (new Date()).
35+
// Пример вызова:
36+
// createDynamicObject('userId', 123) должен вернуть объект, похожий на { userId: 123, createdAt: <текущая дата> }.
37+
38+
function createDynamicObject(key, value) {
39+
return {
40+
[key]: value,
41+
createdAt: new Date(),
42+
};
43+
}
44+
45+
const result = createDynamicObject('userId', 123);
46+
console.log(result); // { userId: 123, createdAt: 2025-08-28T13:32:53.775Z }
47+
48+
// Задание 3:
49+
// Представь, что нужно сформировать объект для отправки на сервер. У тебя есть несколько переменных:
50+
// const login = 'admin_user';
51+
// const token = 'a1b2-c3d4-e5f6';
52+
// const actionType = 'deletePost';
53+
// Твоя задача: Создать объект requestData, который будет включать в себя:
54+
// 1. Свойства login и token, используя сокращенную запись.
55+
// 2. Динамическое свойство, где ключ — это значение переменной actionType (deletePost), а значение — true. Используй вычисляемые имена.
56+
// 3. Метод getAction(), который возвращает значение переменной actionType. Используй сокращенную запись метода.
57+
58+
const login = 'admin_user';
59+
const token = 'a1b2-c3d4-e5f6';
60+
const actionType = 'deletePost';
61+
62+
const requestData = {
63+
login,
64+
token,
65+
[actionType]: true,
66+
getAction() {
67+
return actionType;
68+
},
69+
};
70+
71+
console.log(requestData);
72+
/*
73+
{
74+
login: 'admin_user',
75+
token: 'a1b2-c3d4-e5f6',
76+
deletePost: true,
77+
getAction: [Function: getAction]
78+
79+
*/
80+
81+
console.log(requestData.getAction()); // "deletePost"

0 commit comments

Comments
 (0)