Pull to refresh
44
0
Владимир @shock_one

User

Send message
Кстати, Nicholas описал практически такое же решение, но с одним массивом в разделе «Towards truly private members».
Очень красивое решение с WeakMap, я в восторге. У вашего же метода будут проблемы с памятью — данные не удалятся с массивов при сборке мусора.
Я согласен, что это плохое решение. Но то же неявное конвертирование используется, например, в условии if.
То, о чем вы говорите называется type coercion.
Вы о слове коллбек? Да, вы правы, извините.
Можно, например, так:

var daddy = {foo: 'bar'}
var son = Object.create(daddy)
console.log(son.foo)

С одной стороны вы правы, мы используем Object, но зато нам не приходится создавать конструкторов — лишних сущностей — самим.
Почему же не так? Вы можете использовать любой объект как прототип.
Вы, наверное, имели ввиду Q? В async как раз используются callback'и. github.com/kriskowal/q
Готово! В JavaScript есть duck typing.
Люди пользуются promises, features and generators.
Потому, что for...in — итератор по ключам объекта, а ключи объектов — это строки. Массив тоже объект, если что. В ES6 добавили for...of
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
Написано же — «мы считаем, что все, кто работают над кодом — профессионалы и доверяем им».
JavaScript хороший язык, в основном благодаря HOF и замыканиям, но в вашей статье слишком много слов в превосходной степени.

Свойства делают публичными потому, что сделать их приватными не так уж и просто. Нужно объявлять все методы на инстансе, а не на прототипе, что влияет на прозводительность и потребление памяти. Кроме того, нету промежуточного уровня — protected, который много используют в других языках, и поэтому если вы хотите, чтобы ваш «класс» наследовался, приходится использовать properties.

Благодаря системе типов можно избежать целого класса runtime ошибок, правда, за счет более сложного процесса разработки. Например, если ваша программа на Haskell, который известен своей системой типов, скомпилировалась, с большой вероятностью она будет работать как ожидается.

Синтаксис языка во многом похож на C, что вводит многох людей в заблуждение. JavaScript сильно отличается от того, к чему вы привыкли, если писать на нем как на C, будете наступать на разнообразные грабли типа variables hoisting или обработки ошибок в асинхронных коллбеках.

К синтаксису у меня вообще большие претензии, но coffeescript решает почти все.

Вот еще парочка вещей, которые мешают мне любить JavaScript: почему тип null'а это object; почему arguments это как массив, но не массив; почему так сложна логика использования this?
В ES6 добавили генераторы, которые решают вашу проблема, и еще дозволяют централизированно обрабатывать ошибки. Правда, если вы пишете для браузеров, ждать придется еще долго.
На перекрестках не держат дистанцию. Что будет, если у машины спереди откажет двигатель?
Утилита tree таким же образом показывает файлы.
Ну и все модификаторы, если кому интересно:
!:

& — repeat substitution
A — absolute path resolving symbolic links
Q — strip quotes
a — absolute path
e — leave only extension
g — globally apply s or &
h — head — strip trailing path element
l — lower case all words
p — print without executing
q — quote to escape further substitutions
r — root — strip suffix
s — substitute string
t — tail — strip directories
u — upper case all words
x — quote words, breaking on whitespace
dirs -v — показать список запушеных папок.
cd +3 — перейти в третью в списке.
А еще, если вы забывчивый, можно написать функцию (или скопировать из prezto)

# Inserts 'sudo ' at the beginning of the line.
function prepend-sudo {
if [[ "$BUFFER" != su(do|)\ * ]]; then
BUFFER=«sudo $BUFFER»
(( CURSOR += 5 ))
fi
}
zle -N prepend-sudo
bindkey "^X^S" prepend-sudo

Теперь вы можете добавлять sudo с C-x C-s.
Работает в ZSH, для BASH нужно немножко подшаманить.

Information

Rating
Does not participate
Location
Тернополь, Тернопольская обл., Украина
Date of birth
Registered
Activity