Skip to content

Commit 26fb869

Browse files
committed
[LES-13.5/st-compl] obj-methods-context-this
Practice with "this" context. Using "arrow" func, "bind/call()" meth's. Worth noting: - possibilities of the "bind/call/apply()" meth's. FS-dev: B-3 / JS basic
1 parent a994ba4 commit 26fb869

File tree

1 file changed

+47
-0
lines changed
  • full-stack-dev/3-js-basic/13-objects/13-5-obj-methods-context-this

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Задание 1:
2+
// Измени всего одну строку (строку с let show = ...), чтобы вызов show() сработал корректно и вывел "Tesla".
3+
4+
let car = {
5+
brand: 'Tesla',
6+
showBrand: function () {
7+
console.log(this.brand);
8+
},
9+
};
10+
11+
let show = car.showBrand.bind(car);
12+
13+
show(); // "Tesla"
14+
15+
// Задание 2:
16+
// Представь, что у нас есть один объект с полезным методом, и мы хотим "одолжить" этот метод для другого объекта, у которого такого метода нет.
17+
// Напиши одну строку кода, которая вызовет метод logName из объекта logger таким образом, чтобы он сработал в контексте объекта user и вывел в консоль "Имя пользователя: Иван".
18+
// Используй для этого метод .call().
19+
20+
let user = {
21+
name: 'Иван',
22+
// У этого объекта нет своего метода
23+
};
24+
25+
let logger = {
26+
logName: function () {
27+
console.log('Имя пользователя: ' + this.name);
28+
},
29+
};
30+
31+
logger.logName.call(user); // "Имя пользователя: Иван"
32+
33+
// Задание 3:
34+
// Нужно создать объект timer. У этого объекта должен быть метод start, который выводит в консоль сообщение "Тик-так!" каждую секунду. Сообщение должно включать свойство message из самого объекта timer.
35+
// Допиши код внутри метода start, используя setInterval и стрелочную функцию, чтобы в консоль каждую секунду выводилось "Тик-так!".
36+
37+
let timer = {
38+
message: 'Тик-так!',
39+
40+
start: function () {
41+
setInterval(() => {
42+
console.log(this.message);
43+
}, 1000);
44+
},
45+
};
46+
47+
timer.start(); // "Тик-так! Тик-так! Тик-так! Тик-так! ..."

0 commit comments

Comments
 (0)