Lecture 4-5

This commit is contained in:
2025-10-30 17:38:41 +03:00
parent cf48b0ca1b
commit ef82d8b960

View File

@@ -1,4 +1,4 @@
# LEC 4. Java-bruh-script # LEC 4-5. Java-bruh-script
## History ## History
При разработке отталкивался от языков: При разработке отталкивался от языков:
- Self - диалект Small Talk (первый ООП-подобный язык) - Self - диалект Small Talk (первый ООП-подобный язык)
@@ -152,4 +152,109 @@ console.log(arr.length); // 11
- join - join
- slice - slice
- splice - splice
- sort - 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)
```
В прототипном стиле все поля пубичные
## Обработка операций
Событийно-ориентированный