JavaScript

Javascript ООП В чем суть кражи конструктора ?

Daulet .
Daulet .
5
Пошла зубрежка фирменных слов...
Два года использую JS, впервые слышу такое.

Немного поискал в гугле, судя по соседним вопросам, учишь JS по этой книге - http://instantexperts.ru/wp-content/uploads/doc.pdf ...Но там же, с. ка, на первой странице написано "Для профессионалов". Упомянутая в вопросе "кража" описывается на 237 странице.

А суть в том, что стандартные фишки JS автор почему-то называет проблемой, и начинает с ними бороться.

Если создать массив в prototype функции-конструктора, а потом пытаться изменить этот массив из созданного экземпляра, эти изменения будут видны у всех экземпляров, просто потому что так и задумано: в prototype лежит всего один массив, и он доступен для всех экземпляров.

Автор предлагает костыльно перенести создаваемый массив из prototype прямо в конструктор экземпляра, создавая новый массив для каждого.

Вместо этого можно тупо создать этот массив прямо в конструкторе, причем, явно:

function SubClass() {
  this.colors = ['red', 'green', 'blue']
}

Всё. При вызове new SubClass() будут создаваться экземпляры, у каждого - свой массив.
__________

Опять же, книгда явно не для новичка. Чтобы её читать, надо уже хорошо знать JS и бегло пройти по страницам, чтобы почерпнуть что-то интересное.

Для начального уровня существует https://learn.javascript.ru/
АА
Антон Антонов
62 360
Лучший ответ
Daulet . Спасибо за совет, но я эту книгу мучаю уже год, чтобы разобраться в javascript. Я читал более простую книгу по javascript, но программистом так и не стал.. Решил взять посложнее, где больше информации. А сайт я тоже параллельно иногда читаю learn.javascript.ru, но пока я могу писать только простенькие скрипты да и пока не все...
У тебя украли?))
Daulet . очень смешно, это другое название обычного наследования, однако существует еще 2 вида наследования...
чтобы продать, а деньги пропить
Сергей Грибов
Сергей Грибов
15 161
Daulet . какой ты умный!
Можно, но зачем оно тебе нужно.
Подставить тебе не получится по той причине что яваскрипт будет ругаться что эти переменные зарезервиранные у неё. Можешь конечно пытаться, но я думаю этим не стоит заниматься. Лучше создай другой вопрос
Daulet . не совсем понял... о чем разговор?
Наверно создание одного типа и преобразование к другому который и нужен) А так я не знаю))