Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 16.12.2012, 11:01
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Да) это я придумал когда доказывал одному парню что прототипы могут все что могут классы, тогда он давал мне задания которые я не мог сделать обычным способом но я выкручивался, в итоге он мне сказал что это больше походит на костыль, а я ему ответил что если тебе не удобно так пистаь то это можно в простую обертку обернуть)

Собственно вот как это выглядело без обертки:

// конструктор животного (создает животных)
function Animal () {
   return this.init.apply(this, arguments)
}
// конструктор прототипа животного (создает эталонное животное)
function AnimalPrototype () {
    this.init = function(){};
    this.run = function(){ alert('run') }
}
// создаем эталонное животное как прототип животных 
// конструктор Animal будет инициализировать метод инициализации (init) эталонного животного
Animal.prototype = new AnimalPrototype;



// конструктор котов(создает котов)
function Cat () {
   return this.init.apply(this, arguments)
}
// конструктор прототипа кота(создает эталонного кота)
function CatPrototype(){
    this.run = function(){ CatPrototype.prototype.run.apply(this, arguments);  alert('run') }
}

// указываем что эталонное животное будет эталоном для эталонных котов
CatPrototype.prototype = Animal.prototype;

// создаем эталонного кота как прототип котов 
// конструктор будет инициализировать метод инициализации (init) эталонного кота
Cat.prototype = new CatPrototype;


эталон, прототип, образец - синонимы.

(это и называется наследование на прототипах, когда один обьект служит образцом для других и они стараются на него ровняться если отличия не созданы намеренно, это техника повторного использования кода, когда у дочерних обьектов нам нужно описывать только отличие от эталонного, и, как бонус, оно экономит память )

вот, а в Class это все делается автоматически)

Последний раз редактировалось godofjavascript, 16.12.2012 в 11:29.
Ответить с цитированием
  #42 (permalink)  
Старый 16.12.2012, 12:09
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

godofjavascript,
Всё твоё сообщение - копипаста из раздела "учебник". Мог бы просто ссылку дать.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
Ответить с цитированием
  #43 (permalink)  
Старый 16.12.2012, 14:39
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> почему нет то?
не думаю что компилятор хаскела совсем идиоты писали

> ты так говоришь, будто у нас такой код везде встроен
главное - возможность такого встраивания. из-за этой возможности невозможно применить нужные оптимизации.
__________________
.ня
Ответить с цитированием
  #44 (permalink)  
Старый 16.12.2012, 14:43
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от godofjavascript Посмотреть сообщение
РАЗ МОЖНО СДЕЛАТЬ ПОбОЧНОСТЬ то значит не фп, это же бред))
http://ru.wikipedia.org/wiki/%D0%A4%...BD%D0%B8%D0%B5

http://ru.wikipedia.org/wiki/%D0%A4%...%D0%BA%D 0%B0)

приятного чтения
__________________
.ня
Ответить с цитированием
  #45 (permalink)  
Старый 16.12.2012, 14:44
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от tenshi
не думаю что компилятор хаскела совсем идиоты писали
google://"lazy evaluation"

Сообщение от tenshi
главное - возможность такого встраивания. из-за этой возможности невозможно применить нужные оптимизации.
это со стороны компилятора невозможно.

мы говорим о разных вещах - ты о компиляторе JS, я о стиле программирования.

кстати, я немного перепутал Функциональное с Декларативным вообще, извини )

Последний раз редактировалось melky, 16.12.2012 в 14:47.
Ответить с цитированием
  #46 (permalink)  
Старый 16.12.2012, 14:50
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от melky Посмотреть сообщение
google://"lazy evaluation"
google://"compile time evaluation"
__________________
.ня
Ответить с цитированием
  #47 (permalink)  
Старый 16.12.2012, 14:52
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а, ну программировать "в стиле" фп конечно можно) только это будет всё-равно императивная парадигма :Р
__________________
.ня
Ответить с цитированием
  #48 (permalink)  
Старый 16.12.2012, 16:25
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от Tim
Всё твоё сообщение - копипаста из раздела "учебник". Мог бы просто ссылку дать.
не читал учебник но если там такое есть то мне лестно, значит я крут) ссылку можно? и вообще если ты не пятросян и там такое на самом деле есть, то это очень круто.

tenshi,
ты мне так и не ответил, каким образом то что в яваскрипте можно функциями делать побочные действия делает тебя ОБЯЗАННЫМ их делать превращая в процедуры? ссылки на википедию мне кинул, только узнал штоле о фп и решил поделиться?

Последний раз редактировалось godofjavascript, 16.12.2012 в 16:30.
Ответить с цитированием
  #49 (permalink)  
Старый 16.12.2012, 16:53
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
не читал учебник но если там такое есть то мне лестно, значит я крут) ссылку можно? и вообще если ты не пятросян и там такое на самом деле есть, то это очень круто.
Пожуй говна максимус. Что крутого в том чтобы скопипастить пару строк кода? Даже если не копипаст, всё равно эти извращения ни кого не впечатляют. Ты далеко не первый кто пытается имитировать стандартное ООП в JS. Думаешь кто то этого не умеет? Это просто ни кому не нужно. На JS нужно писать как на JS а не городить на нём порт PHP и других языков с классическим ООП.

Ссылку сам ищи если хочешь.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 16.12.2012 в 19:38.
Ответить с цитированием
  #50 (permalink)  
Старый 16.12.2012, 20:14
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от Tim
Пожуй говна максимус.
петушку припекло)) ссылку видно найти не смог, пытается троллировать) лал
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать какая функция вызывается в браузере при наведении мыши? Бобр Элементы интерфейса 6 01.10.2012 04:01
Неверно работает OnBlur и, как следствие - OnFocus motoriton Firefox/Mozilla 0 10.08.2012 09:06
как повесить на событие функция класса Hugo_O Общие вопросы Javascript 14 06.11.2010 02:09
Не работает функция из подключаемого файла evgenyan jQuery 3 28.10.2010 14:48
Ajax и три <form> не работает. Как правильно сделать листание записей из базы данных? vlad275 AJAX и COMET 2 14.12.2009 14:04