Умовні конструкції та об'єкти
Умовні оператори - це конструкція мови програмування, що забезпечує виконання певної операції (команд/інструкцій) тільки в випадку, якщо умова являється істинною (true)
ЯКЩО: (умова)
ТОДІ: виконати дану серію інструкцій
ІНАКШЕ: виконати іншу серію інструкцій
const a = 10;
const b = 100;
const c = 3;
// example with if
if (a === 10) {
console.log("a is equal 10");
}
// example with if..else
if (b > 1) {
console.log("b is bigger than 1");
} else {
console.log("b is smaller than 1");
}
// example with else...if
if (c > 1) {
console.log("c is bigger than 1");
} else if (c == 10) {
console.log("c is equal 10");
} else {
console.log("c is smaller than 1");
}
Використовуються, коли потрібно порівняти значення змінною і в залежності від результату (true/false) виконати тут чи іншу операцію
const MATH_PI = 3.14;
const radius = 10;
const formula = 'circumference';
// ternary
const result = formula === 'circumference'
? MATH_PI * (2 * radius)
: MATH_PI * (radius * radius);
Оператор багатозначного вибору - це конструкція мови програмування, що дозволяє врахувати більшу кількість умов
const day = "1";
switch (day) {
case "1": {
console.log("It is Monday");
}
break;
case "2": {
console.log("It is Tuesday");
}
break;
case "3": {
console.log("It is Wednesday");
}
break;
default: {
console.log("It is true");
}
}
Об'єкти JavaScript - це набори властивостей і методів. Властивості об'єктів — це дані, пов'язанні з об'єктом, а методи — функції для опрацювання даних об'єкта. Адресація (посилання) властивостей у сценаріях JavaScript можлива або за назвами, або за номерами.
Приклад:
// Dog object
const dog = {
name: 'Teddy', // property
age: 3,
hasHotDog: true,
speak: () => console.log("Woof!"), // method
}
console.log("The Dog name is ", dog.name);
console.log("The Dog age is ", dog.age);
if (dog.hasHotDog) {
console.log("The Dog has Hot Dog");
}
dog.speak()
Існує декілька варіантів, як можна створити новий об'єкт
// create with an object literal
const dog1 = { };
// with properties
const dog2 = {
friendly: true,
speak: () => console.log("Woof! Woof!"),
};
// with constructor
const dog3 = new Object();
const dog = {
friendly: true,
speak: () => console.log("Woof! Woof!"),
};
// adding new property name
dog.name = "Rex";
// adding new method
dog["run"] = () => console.log("Run");
const dog = {
name: 'Teddy',
friendly: true,
speak: () => console.log("Woof! Woof!"),
likeCats: false
};
// adding a new property name
dog.name = "Rex";
// removing a property
delete dog.likeCats;
const dog = {
friendly: true,
speak: () => console.log("Woof! Woof!"),
};
// Returns the primitive value of the specified object.
// Result - {friendly: true, speak: ƒ}
dog.valueOf();
// Check, if has property
// Result - true
dog.hasOwnProperty('speak');
// Check, if has property
// Result - false
dog.hasOwnProperty('likesIcecream');
// Get string representation of an object
dog.toString();
...та інші
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }
const person = {
isHuman: false,
printIntroduction: function() {
console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);
}
};
const Mat = Object.create(person);
Mat.name = 'Matthew'; // "name" is a property set on "me", but not on "person"
Mat.isHuman = true; // inherited properties can be overwritten
Mat.printIntroduction();
// expected output: "My name is Matthew. Am I human? true"
const object1 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.keys(object1));
// expected output: Array ["a", "b", "c"]
Так як об'кти дозволяють групувати певні властивості, їх використовуються для:
- базової конфігурації
- опису об'єкта/предмета/сутності
- набір константних значень
- в функціях-конструкторах
const testConfiguration = {
module: 'Users',
version: '1.0.0',
submit: () => console.log("Submit action"),
validate: () => console.log("Validate action"),
};
const testFn = () => {
if (testConfiguration.module === 'Users') {
testConfiguration.validate();
testConfiguration.submit();
}
}
const dog = {
friendly: true,
speak: () => console.log("Woof! Woof!"),
};
// reuse and extend dog properties for dog Teddy
const Teddy = Object.assign({}, dog);
Teddy.name = 'Teddy';
// reuse and extend dog properties for dog Rex
const Rex = Object.assign({}, dog);
Rex.name = 'Rex';