From ef82d8b960da0b7877046ddc225b0ccb3a8efbbc Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Thu, 30 Oct 2025 17:38:41 +0300 Subject: [PATCH] Lecture 4-5 --- lec/{4.md => 4-5.md} | 109 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) rename lec/{4.md => 4-5.md} (58%) diff --git a/lec/4.md b/lec/4-5.md similarity index 58% rename from lec/4.md rename to lec/4-5.md index d4547c8..24eb489 100644 --- a/lec/4.md +++ b/lec/4-5.md @@ -1,4 +1,4 @@ -# LEC 4. Java-bruh-script +# LEC 4-5. Java-bruh-script ## History При разработке отталкивался от языков: - Self - диалект Small Talk (первый ООП-подобный язык) @@ -152,4 +152,109 @@ console.log(arr.length); // 11 - join - slice - splice -- sort \ No newline at end of file +- sort + +## Области видимости +Всё как в обычных ЯП + +## Замыкание +Замыкание = (функция) + внешнее лексическое окружение + +```js +function makecount(){ + var cur_co = 1; + return function(){ + return cur_co++; + }; +} + +var counter = makecount(); +``` + +## Контекст-this +```js +var admin = {name: "PIE"} +var user = {name : "CHOCO"} +function func(){ + alert(this.name) +} +admin.g = func; +user.u = func; +admin.g(); // PIE +user.u(); // CHOCO +func() // undefined +``` + +### Манипуляции с контекстом +- ```func.call(context, arg1 arg2, ...);``` - вызывает функцию однократно +- ```func.apply(context, [arg1, arg2, ...]);``` - то же самое, но с двумя аргументами +- ```var wrapper = func.bind(context[, arg1, arg2, ...]);``` - создание копии функции, но фиксируется контекст функции и аргументы - карирование + +## ООП-функциональный стиль +Задание публичного: +- метода +```js +this.getVar = function(){ + return _another; +}; +``` +- свойства: +```js + this._dem = 1; +``` + +Приватное свойство и/или метод задаётся так же, но без ```this```. + +### Наследование +Базовый класс +```js +function A(){ + this.enable = function(){ + ... + } + ... +} +``` +Производный класс +```js +function B(){ + Machine.call(this, [, arg1, ...]); + // Machine.apply(this, [, args]); + + ... +} +``` +## Прототипный стиль ООП +Функции остались (блень) + +Базовый класс +```js +var car { + fuel: 0.7; + fph: 9.; + ride: function(dist){ + ... + }; +} +``` +Производный класс: +```js +var truck { + longback: true; + __proto__: car; +} + +truck.ride(); +``` + +```js +obj.hasOwnProperty() +Object.getPrototypeOf(obj, [proto]) +obj1 instanceof obj2 +obj2.isPrototypeOf(obj1) +``` + +В прототипном стиле все поля пубичные + +## Обработка операций +Событийно-ориентированный \ No newline at end of file