Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 03.03.2009, 16:46
Аватар для Pavel_Volodko
Интересующийся
Отправить личное сообщение для Pavel_Volodko Посмотреть профиль Найти все сообщения от Pavel_Volodko
 
Регистрация: 02.03.2009
Сообщений: 20

Сообщение от Zeroglif Посмотреть сообщение
Отсюда 2 вывода - то ли вам важны локальные переменные ($className), то ли вам не нравится "обвешивать" объект-прототип руками или через for-in...
Локальные переменные не важны. Это просто одна из возможностей.
А вот "обвешивать" объект мне не нравится - это точно.

Сообщение от Zeroglif Посмотреть сообщение
instanceof не оправдывает своего названия буквально и является терминологической натяжкой из чужого class-based мира, в js объекты наследуют от объектов, понятия "класс" не просто нет, а если бы оно даже и было, то мы бы столкнулись с задачей определения, что включить в этот термин - прототип или прототипы, конструктор или конструкторы, или всё вместе, что участвовало в создании цепочки или её составляет, при этом, если цепь прототипов после содания хе-хе "instance" можно считать стабильной и связанной с ним, то свойству 'prototype' конструкторов можно присваивать другие значения, что делает алгоритм instanceof в этом случае бесполезным.
Тут не соглашусь. instanceof работает как ему положено. Вопрос в том, правильно ли мы его используем. Понятно, что в javascript-е можно перехерачить любой объект до неузнаваемости, но в таком случае, его никто и не узнает
Если архитектура приложения правильная, то иерархия наследования не может быть не стабильной. Если цепочка где-то ломается - плохая архитектура.
Язык дает программисту полную свободу, но не стоит ей злоупотреблять.
Ответить с цитированием
  #42 (permalink)  
Старый 03.03.2009, 17:06
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Pavel_Volodko
А вот "обвешивать" объект мне не нравится - это точно.
Ну, вот и причина.

Сообщение от Pavel_Volodko
Вопрос в том, правильно ли мы его используем.
А как бы вы его (оператор) правильно использовали? Пусть мы узнали, что sidorov instanceof Person, и что дальше с этим делать?
Ответить с цитированием
  #43 (permalink)  
Старый 03.03.2009, 17:06
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Дело не в эмулировании. Дело в том, что я расширяю стандартные возможности javascript или пытаюсь сделать что-то немного удобнее для использования при разработке. Если решение мне помогает - цель достигнута.
если тебе помогает, это хорошо. Я просто не знаю, как оно мне может помочь

Цитата:
Насчет "естественный вариант должен быть проще, по идее" - проще не значит лучше. Я и сам за простые решения.
имелось в виду "Сделай так просто, как возможно, но не проще этого"

Цитата:
Кстати, с этой точки зрения, моё решение абсолютно естественное, т.к. построено на элементарных возможностях прототипного наследования
оно не может быть абсолютно естественным, т.к. это наследование, построенное на базе прототипного (естественного) наследования

Цитата:
Если архитектура приложения правильная, то иерархия наследования не может быть не стабильной. Если цепочка где-то ломается - плохая архитектура
что-то мне кажется, что не все так однозначно - "только классические иерархии, к которым мы привыкли в статических языках"
Ответить с цитированием
  #44 (permalink)  
Старый 03.03.2009, 17:15
Аватар для Pavel_Volodko
Интересующийся
Отправить личное сообщение для Pavel_Volodko Посмотреть профиль Найти все сообщения от Pavel_Volodko
 
Регистрация: 02.03.2009
Сообщений: 20

Сообщение от Zeroglif Посмотреть сообщение
Ну, вот и причина.


А как бы вы его (оператор) правильно использовали? Пусть мы узнали, что sidorov instanceof Person, и что дальше с этим делать?
:confused: Даже не знаю, что и сказать... Да что нужно, то и делайте. Это же просто инструмент. Это тоже самое, что сказать "ну есть у меня молоток и что с ним делать?". Не знаете что делать, значит вам не нужен молоток
Ответить с цитированием
  #45 (permalink)  
Старый 03.03.2009, 17:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Зачем нам instanceof, если у нас duck typing?
Ответить с цитированием
  #46 (permalink)  
Старый 03.03.2009, 17:22
Аватар для Pavel_Volodko
Интересующийся
Отправить личное сообщение для Pavel_Volodko Посмотреть профиль Найти все сообщения от Pavel_Volodko
 
Регистрация: 02.03.2009
Сообщений: 20

Сообщение от x-yuri Посмотреть сообщение
если тебе помогает, это хорошо. Я просто не знаю, как оно мне может помочь


имелось в виду "Сделай так просто, как возможно, но не проще этого"


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


что-то мне кажется, что не все так однозначно - "только классические иерархии, к которым мы привыкли в статических языках"
Это уже какая-то философия.

Ещё раз повторюсь - я сделал то, что мне было нужно, исходя из своих собственных представлений о процессе разработки на javascript. Если вы не видите как это можно использовать, значит вам это и не нужно. Всего-то.

Я просто хочу показать, что можно делать вот так, но не утверждаю, что по-другому нельзя.
Ответить с цитированием
  #47 (permalink)  
Старый 03.03.2009, 17:24
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Pavel_Volodko
Не знаете что делать, значит вам не нужен молоток
Я знаю, что этот молоток мне совершенно не поможет, поэтому давно его не использую. Вообще. Просто вы сказали, что instanceof надо правильно использовать, что это определитель принадлежности объекта классу и проч., так как вы с ним работаете? На примере того же sidorov-а, допустим мы с помощью молотка instanceof узнали, что Person.prototype находится в где-то в цепи прототипов sidorov-a, и дальше что?
Ответить с цитированием
  #48 (permalink)  
Старый 03.03.2009, 17:40
Аватар для Pavel_Volodko
Интересующийся
Отправить личное сообщение для Pavel_Volodko Посмотреть профиль Найти все сообщения от Pavel_Volodko
 
Регистрация: 02.03.2009
Сообщений: 20

Сообщение от Zeroglif Посмотреть сообщение
Я знаю, что этот молоток мне совершенно не поможет, поэтому давно его не использую. Вообще. Просто вы сказали, что instanceof надо правильно использовать, что это определитель принадлежности объекта классу и проч., так как вы с ним работаете? На примере того же sidorov-а, допустим мы с помощью молотка instanceof узнали, что Person.prototype находится в где-то в цепи прототипов sidorov-a, и дальше что?
Под "правильно использовать" имелось ввиду с архитектурной точки зрения.
Загляните в код Prototype. Там есть примеры использования.
Ответить с цитированием
  #49 (permalink)  
Старый 03.03.2009, 17:49
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Pavel_Volodko
Под "правильно использовать" имелось ввиду с архитектурной точки зрения.
Ну вот, всё-таки, интерес больше академический, нежели прикладной (это тоже хорошо). Однако, в данном случае получается instanceof ради instanceof; на практике он вряд ли пригодиться.

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

А вообще,
Сообщение от x-yuri
это наследование, построенное на базе прототипного (естественного) наследования
Что значит на базе? Это и есть прототипное наследование. Просто в удобной (в конкретном случае, для конкретного человека) обёртке. Суть там никак не меняется.

update:
Сообщение от Kolyaj
Зачем нам instanceof, если у нас duck typing?
а зачем подобный оператор в других языках (Python, Ruby) и при наличии duck typing'a?
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 03.03.2009 в 18:14. Причина: опечатки
Ответить с цитированием
  #50 (permalink)  
Старый 03.03.2009, 18:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Что значит на базе? Это и есть прототипное наследование. Просто удобной (в конкретном случае, для конкретного человека) обёртке. Суть там никак не меняется
реализация - прототипное наследование естественно, но ведь автор хочет сэмулировать классовое наследование. Возможно будут ситуации, когда прийдется вспомнить, что в Javascript нету классового наследования

Цитата:
А в целом, если Вам удобно и иерархическая структура при использовании этой обёртки Вам кажется более удобной - это самое главно (с учётом, естественно, что Вы знаете и понимаете, как это работает без обёртки)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Компании Яндекс нужен Javascript гуру Yandex Работа 17 16.12.2008 16:46
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43
Требуется программист на JavaScript Vadym Работа 0 17.07.2008 20:40