↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
arctblake
22 февраля 2016
Aa Aa
parseInt, parseFloat, n.toFixed(5) --> string, n.toString(2), isNaN, isFinite, str.trim(), str.split('').

> parseInt('123', 2);
< 1

arr.splice(index[, deleteCount, elem1, ..., elemN]) --> returns arr of del.
.sort
.forEach(callable[, thisArg])
.map
.filter
.every
.some
.reduce

аргументы отделены от локальных переменных

Когда интерпретатор 'заходит' в область видимости, он создает объект LE, устанавливает ему свойство __proto__ (ссылка на родительский объект LE), сканирует область на предмет объявлений FD и var ...

LE
[[Scope]]

Фактически, мы всегда имеем дело не с переменными, а с объектами и их свойствами.

window - один глобальный объект на страницу.

Функция - подвид объекта.

Любая функция может иметь в себе this. Совершенно неважно, объявлена ли она в объекте или отдельно от него.
Значение this называется контекстом вызова и определяется в момент вызова функции.

Сама функция никак не запоминает this. Контекст в функцию нужно явно передать (вызвать в контексте объекта). ReferenceType.

Скобки получают из base свойство name и вызывают в контексте base.

При строковом преобразовании объекта используется его метод toString. Он должен возвращать примитивное значение, причём не обязательно именно строку.

Для числового преобразования используется метод valueOf, который также может возвратить любое примитивное значение. У большинства встроенных объектов valueOf не работает (возвращает сам объект и потому игнорируется), при этом для числового преобразования используется toString.

Вообще, в выражениях (бинарный +, сравнения и тп) объект сначала должен быть преобразован к примитивному типу. Для такого приведения всегда используется метод valueOf, если определен. Если нет - используется toString. Исключение - объекты Date. Бинарный + преобразует объект Date с использованием метода toString, хотя метод valueOf у объектов Date также определен.

Object.defineProperty(obj, property_name, descriptor);
Если свойство не создается, а переопределяется, то старый дескриптор объединяется с новым.

Метод - просто название. На самом деле, все методы объектов - это обычные функции, которые вызываются в контексте объекта. Поэтому методы можно одалживать.

Карринг (currying) или каррирование – термин функционального программирования, который означает создание новой функции путём фиксирования аргументов существующей.

setTimeout(user.sayHi, 1000);


JSON.parse(str, reviver)
JSON.stringify(data, replacer, indent)

Сериализация объекта.

window.onerror

Вызов приватного метода (локальной функции по факту) с явным указанием контекста, привязка контекста к локальной функции при объявлении, self.

Переопределение/расширение метода родителя.

__proto__ - чтение
Object.create(proto[, descriptors])

Func.prototype = {constructor: Func}

console.dir(obj)

При создании объекта через new, в конструкторе сразу после создания нового пустого объекта в него записывается свойство __proto__ с соответствующим значением.

При декорировании функции, возвращаемая обертка должна выглядеть так, будто это та же самая базовая функция, ведь эту обертку потом будут вызывать так, будто это базовая функция.
22 февраля 2016
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть