29.12.2014, 23:58
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
ssadfaf,
Тут есть ньюанс. Я писал наспех, не думал, что вам это понадобиться. Данная версия extend некорректно работает со значениями false, и приводимыми к false
extend=function(src, trg){for(var i in src) if(!trg[i]) trg[i]=src[i]}
pattern={foo: 1, bar: 2, baz: 3}
dbs={
list: [
{foo: 0},
{foo: 100, bar: false}
]
}
for(var i=0; i<dbs.list.length; i++){
extend(pattern, dbs.list[i])
}
for(var i=0; i<dbs.list.length; i++){
console.log(dbs.list[i])
}
// { foo: 1, bar: 2, baz: 3 }
// { foo: 100, bar: 2, baz: 3 }
используйте вот эту версию
extend=function(src, trg){for(var i in src) if(!(i in trg)) trg[i]=src[i]}
|
|
30.12.2014, 00:06
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от ssadfaf
|
Всё от того, что я делаю себе помощника в изучении HTML/CSS/JS, попутно изучая их. Вот такая вот рекурсия.
|
изначально двигался по тому же пути, попутно изобретая различные варианты представления материала (разметка и т.п.),
сейчас один проект в phpstorm голимого текста с хорошо организованной кучей файлов и каталогов
(уже мегабайт на 300 накапало, если не больше,
хорошо - условно, процесс переструктуризации бесконечный,
голимого - без разметки, кроме выделения блоков с кодом,
в целом, сложилась некоторая структура написания файлов, которая, при необходимости скриптом позволит добавить разметку)
почти каждый файл решает некоторую задачу, во главе угла идеи процедурного программирования (одни файлы решают более мелкие задачи, другие используют их для решения более крупных)
в продакшн, вероятно, не выйдет
|
|
30.12.2014, 00:53
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от ssadfaf
|
Честно говоря, на данном этапе моего разумения не хватает, чтобы понять, зачем вообще нужен прототип, если всё равно приходится перебирать каждую пару ключ-значение.
|
Для общего понимания работы прототипов, понимания идей прототипного ООП, почитай, обзорно, что нибудь по SELF, IO, отчасти Смоллток, в контексте понимания идей позднего динамического связывания и семантики сообщений. Это очень мощная модель, на самом деле, гораздо мощней нежели "классовая" Java-like модель. Это основа языка, и, как ни парадоксально, в литературе по JS эта тема очень слабо освещена.
|
|
30.12.2014, 07:22
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
Erolast, тоже спасибо, но я сначала хочу получить базовые знания по HTML, CSS и JS, а потом уж расширять свои возможности.
|
Это базовые знания.
В общем-то, мой код делает то же, что и код крутого, только у меня сразу идет обертка в класс. Классы нужны, с ними при расширении структуры приложения кода придется писать меньше, при том, что на этом уровне ничего не усложняется.
|
|
31.12.2014, 12:33
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Erolast,
Цитата:
|
ssadfaf, учи сразу ES6 и ES7. Это пока что неутвержденные (но близящиеся к тому) версии стандарта JS
|
Это какой-то почти вредный совет. Несмотря на то, что уже можно писать на ES6, всё равно нужно начинать с ES5, т.к. основы никуда не денутся. В ES6 те же классы строятся на прототипах, новичкам будет гораздо лучше поработать сначала с прототипами, а потом переходить к классам, чтобы было понимание того, как работают новые механизмы языка.
Ах да, ES7 пока ниразу не близится к завершению)
|
|
31.12.2014, 15:35
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
Несмотря на то, что уже можно писать на ES6, всё равно нужно начинать с ES5, т.к. основы никуда не денутся
|
А чего не с ES3?)
Цитата:
|
В ES6 те же классы строятся на прототипах, новичкам будет гораздо лучше поработать сначала с прототипами, а потом переходить к классам, чтобы было понимание того, как работают новые механизмы языка.
|
Спорно. Обычно таки сперва изучают механизм в общем и лишь потом углубляются в то, как он работает.
Цитата:
|
Ах да, ES7 пока ниразу не близится к завершению)
|
Ну да, коряво выразился.
Последний раз редактировалось Erolast, 31.12.2014 в 15:42.
|
|
31.12.2014, 15:46
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от Erolast
|
Обычно таки сперва изучают механизм в общем и лишь потом углубляются в то, как он работает.
|
там нет никакого "механизма", это всего лишь сраный сахар. Если бы люди понимали "механизм", никакие "Классы" бы не понадобились. Как и сам ES6 ES7 etc.
|
|
31.12.2014, 15:59
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Erolast,
Цитата:
|
А чего не с ES3?)
|
Ну.. и его тоже) Просто сейчас наиболее распространена именно 5 версия.
Цитата:
|
Спорно. Обычно таки сперва изучают механизм в общем и лишь потом углубляются в то, как он работает.
|
Как ты и сказал - спорно)
|
|
31.12.2014, 16:00
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
krutoy,
Цитата:
|
Как и сам ES6 ES7 etc.
|
Ну это ты перегнул, конечно.
|
|
31.12.2014, 16:06
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
Ну.. и его тоже) Просто сейчас наиболее распространена именно 5 версия.
|
Не, ну разумеется надо изучать весь язык, но зачем, скажем, велосипедить свой extend, когда можно просто взять уже имеющийся?
Цитата:
|
там нет никакого "механизма", это всего лишь сраный сахар. Если бы люди понимали "механизм", никакие "Классы" бы не понадобились. Как и сам ES6 ES7 etc.
|
Любой ЯП - не более, чем синтаксический сахар над машинным кодом.
|
|
|
|