Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.10.2014, 22:59
Профессор
Отправить личное сообщение для torsar Посмотреть профиль Найти все сообщения от torsar
 
Регистрация: 06.01.2012
Сообщений: 409

наследование в js
Так сколько же видов наследования можно реализовать в js?

В одной из вакансий сказано, что претендент, будучи разбуженным в 3 часа ночи, должен рассказать, как минимум, про 3 типа наследования .
так сколько же их?

где почитать про все виды наследования?
где написано все про объекты и наследование?
посоветуйте книги, ресурсы
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2014, 03:29
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Не ходите в ту контору, там идиоты. Нормальная контора в 3 часа ночи требует от претендента найти все типы наследования за 3 минуты. А вы отпостили вопрос на форум вчера в 21:59, так что мы вам перезвоним.

Впрочем, скорее всего вы им подойдете. Все типы наследования тут javascript ptototype
Ответить с цитированием
  #3 (permalink)  
Старый 25.10.2014, 22:33
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от terminator-101
 
Регистрация: 14.10.2014
Сообщений: 117

Сообщение от torsar
должен рассказать, как минимум, про 3 типа наследования .
Я думаю, в js всего 2 базовых, нативных, механизмов наследования. Первый -- непосредственно от объекта к объекту.

o=Object.create({a: 1})
alert(o.a) // 1 // o унаследовал a от прототипа


Второй -- псевдоклассы

O=function(){this.a=10}
O.prototype.b=11
o=new O
alert([o.a, o.b]) //  [ 10, 11 ] // o унаследовал a от своего "класса", a b -- от прототипа

Причем, это расширение первого, можно сказать, его частный случай. Оба они основаны на делегировании прототипу.

Остальное -- это уже свободное творчество. JS очень гибкий язык, на нем можно реализовать любую модель, фактически. Вот например, реализуем класс-like ООП на замыканиях:

supClass=function(){
   var a = 100
   return function(b){return function(arg) {return eval(arg)}}
}

Class=supClass()
o=Class(1000)
alert([o("a"), o("b")]) //  [ 100, 1000 ] // o унаследовал a от supClass a, b от Class


Часто встречаются различные реализации классовой модели, миксины, тоже можно считать моделью наследования, в принципе.

Но самая мощная модель, это как раз нативная. Она заимствована из селфа и смолтока -- мощнейших языков, поэтому стоит именно ее изучить, и ее придерживаться в основном (чего, к сожалению, массово не происходит).

Что касается литературы, то с ней туго. Кое что есть у Фленагана, но мало. Встречал в инете книжку "Javascript Speccore" по-моему называется, там, как раз об ООП в JS, но не читал, ничего не могу сказать о качестве. Это единственное что я видел по теме.

Сейчас идет массовая пропаганда быдло-фп-стиля, в JS, поскольку, такой стиль хорошо анализируется, легче писать компиляторы, поэтому, власти скрывают, можно сказать. Никому не нужны высокоуровневые абстракции, всем выгодно, чтобы на JS писали "предсказуемо" и "поддерживаемо". А Ъ-стайл плохо оптимизируется и плохо поддерживается (в смысле, энтерпрайзу приходится нанимать кого-то помимо мартышек, чтобы поддерживать код -- ненужно). Положение усугубляется тем, что много прогеров приходит из статических ЯП, а им такая ситуация только на руку. Поэтому JS деградирует потихоньку. Вот такая печальная история.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
Разное оформление для посетителей с JS и без fry2 Events/DOM/Window 13 03.02.2012 17:45