JavaScript хороший язык, в основном благодаря HOF и замыканиям, но в вашей статье слишком много слов в превосходной степени.
Свойства делают публичными потому, что сделать их приватными не так уж и просто. Нужно объявлять все методы на инстансе, а не на прототипе, что влияет на прозводительность и потребление памяти. Кроме того, нету промежуточного уровня — protected, который много используют в других языках, и поэтому если вы хотите, чтобы ваш «класс» наследовался, приходится использовать properties.
Благодаря системе типов можно избежать целого класса runtime ошибок, правда, за счет более сложного процесса разработки. Например, если ваша программа на Haskell, который известен своей системой типов, скомпилировалась, с большой вероятностью она будет работать как ожидается.
Синтаксис языка во многом похож на C, что вводит многох людей в заблуждение. JavaScript сильно отличается от того, к чему вы привыкли, если писать на нем как на C, будете наступать на разнообразные грабли типа variables hoisting или обработки ошибок в асинхронных коллбеках.
К синтаксису у меня вообще большие претензии, но coffeescript решает почти все.
Вот еще парочка вещей, которые мешают мне любить JavaScript: почему тип null'а это object; почему arguments это как массив, но не массив; почему так сложна логика использования this?
В ES6 добавили генераторы, которые решают вашу проблема, и еще дозволяют централизированно обрабатывать ошибки. Правда, если вы пишете для браузеров, ждать придется еще долго.
& — 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
А еще, если вы забывчивый, можно написать функцию (или скопировать из 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 нужно немножко подшаманить.
var daddy = {foo: 'bar'}
var son = Object.create(daddy)
console.log(son.foo)
С одной стороны вы правы, мы используем Object, но зато нам не приходится создавать конструкторов — лишних сущностей — самим.
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
Свойства делают публичными потому, что сделать их приватными не так уж и просто. Нужно объявлять все методы на инстансе, а не на прототипе, что влияет на прозводительность и потребление памяти. Кроме того, нету промежуточного уровня — protected, который много используют в других языках, и поэтому если вы хотите, чтобы ваш «класс» наследовался, приходится использовать properties.
Благодаря системе типов можно избежать целого класса runtime ошибок, правда, за счет более сложного процесса разработки. Например, если ваша программа на Haskell, который известен своей системой типов, скомпилировалась, с большой вероятностью она будет работать как ожидается.
Синтаксис языка во многом похож на C, что вводит многох людей в заблуждение. JavaScript сильно отличается от того, к чему вы привыкли, если писать на нем как на C, будете наступать на разнообразные грабли типа variables hoisting или обработки ошибок в асинхронных коллбеках.
К синтаксису у меня вообще большие претензии, но coffeescript решает почти все.
Вот еще парочка вещей, которые мешают мне любить JavaScript: почему тип null'а это object; почему arguments это как массив, но не массив; почему так сложна логика использования this?
!:
& — 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
cd +3 — перейти в третью в списке.
# 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 нужно немножко подшаманить.