Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 03.03.2009, 18:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dmitry A. Soshnikov
а зачем подобный оператор в других языках (Python, Ruby) и при наличии duck typing'a?
Я первый спросил.
Ответить с цитированием
  #52 (permalink)  
Старый 03.03.2009, 18:13
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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

"Классический" ООП в JavaScript
__________________
Тонкости ECMAScript
Ответить с цитированием
  #53 (permalink)  
Старый 03.03.2009, 18:19
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

мне показалось, что Pavel_Volodko скорее хочет классовое наследование как в статических языках?
Ответить с цитированием
  #54 (permalink)  
Старый 03.03.2009, 18:38
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Pavel_Volodko
Загляните в код Prototype. Там есть примеры использования.
Не хотите говорить - не надо, только в либы не посылайте...
Сообщение от Dmitry A. Soshnikov
Python
У тебя словно переключатель в голове с надписью python, чуть потемнело - чик, "а вот в pythone так там вообще..."
Ответить с цитированием
  #55 (permalink)  
Старый 03.03.2009, 18:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
У тебя словно переключатель в голове с надписью python, чуть потемнело - чик, "а вот в pythone так там вообще..."
Zeroglif судя по всему там действительно вообще
Ответить с цитированием
  #56 (permalink)  
Старый 03.03.2009, 19:15
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Zeroglif
У тебя словно переключатель в голове с надписью python, чуть потемнело - чик, "а вот в pythone так там вообще..."
Ну здрасте! Переключатель! Что теперь, если идеологии, действительно, похожи (но не идентичные, естественно), а терминология разная? Можно подумать, я на пустом месте это говорю.

Сообщение от Zeroglif
чуть потемнело
наоборот - чуть найдена очередная схожесть конкретных технологий в общих "закономерностях"

P.S.>: да и... ты забыл Ruby еще чик, "а там еще интересней Python'a и тоже - похоже на JS"
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 03.03.2009 в 19:18.
Ответить с цитированием
  #57 (permalink)  
Старый 24.03.2009, 16:31
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Сообщение от Zeroglif Посмотреть сообщение
instanceof не оправдывает своего названия буквально и является терминологической натяжкой из чужого class-based мира, в js объекты наследуют от объектов, понятия "класс" не просто нет, а если бы оно даже и было, то мы бы столкнулись с задачей определения, что включить в этот термин - прототип или прототипы, конструктор или конструкторы, или всё вместе, что участвовало в создании цепочки или её составляет, при этом, если цепь прототипов после содания хе-хе "instance" можно считать стабильной и связанной с ним, то свойству 'prototype' конструкторов можно присваивать другие значения, что делает алгоритм instanceof в этом случае бесполезным.
Почему же нельзя определить Класс как пару Конструктор + прототип ?
При этом оговориться что он определяет только Начальный (т.е. при его создании) тип экземпляра.
Включать в понятие несколько конструкторов или несколько прототипов не требуется, т.к. данный конструктор содержит вызовы родительских, а данный прототип из пары Конструктор-прототип - ссылку __proto__ на родительские прототипы , что однозначно определяет всю цепь наследования. Конечно возможны с помощью данного конструктора создание экземпляров с разным набором свойств в зависимости от заданных конструктору параметров , но тем не менее - другого начального создателя у экземпляра НЕТ.

Q: Как использовать instanseof , если в текущий момент экземпляр уже на 100 км отличается от того, что использовался при его создании ?
A: Так же как и если бы он не отличался. Т.е., imho ,это вопрос вообще говоря о том, как вобще использовать instanceof в классическом ООП.
Ответить с цитированием
  #58 (permalink)  
Старый 24.03.2009, 21:26
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от kefi
Почему же нельзя определить Класс как пару Конструктор + прототип ?
Можно определить, никто не мешает тому, как именно держать это в уме.

Сообщение от kefi
что однозначно определяет всю цепь наследования
Ваш первоначальный конструктор может быть пустой безымянной функцией, которая связывает прототип с объектом и тихо помирает - ни имени, ни тела, ничего. То, что это первоначальный создатель видно по коду, но обычными словами род/тип объекта не выразить, признаков нет, уцепиться не за что. Суть объекта (что он наследует) возможно будет выражена где-то выше, допустим в цепи его прототипов есть Func.prototype, и этот конструктор Func вполне себе попадает в instanceof, хотя конструктором вышеуказанного объекта не является ни разу.
Ответить с цитированием
  #59 (permalink)  
Старый 24.03.2009, 22:07
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

[code=Zeroglif]Можно определить, никто не мешает тому, как именно держать это в уме.[/code]
Так я же попытался не в уме , а на бумаге это определить.
Сообщение от Zeroglif
Ваш первоначальный конструктор может быть пустой безымянной функцией
Ввиду слабости в javascript я как-то не могу себе представить, как это возможно анонимный конструктор и его прототип сделать потомками еще какой бы то ни было пары Конструктор-прототип, т.е. я имею ввиду направить свойство __proto__ прототипа сопровождающего анонимный конструктор на другой прототип , ведь прототип , сопровождающий анонимный конструтор это Function.prototype :
Имеются тождества :
{n:"132" }.constructor===Object ;
{}.constructor===Object ;
function(){}.constructor===Function ;
Т.е. не будет в цепи наследования анонимных конструкторов .
Докажите, плз, если, где я ошибаюсь.
Впрочем, есть и такой вариант :
var s=new function(){this.n="132" ; } ; s.constructor!==Function
Но все равно и здесь не направить, свойство __proto__ на предка.

Вот. Но это одно.
А второе - если основывать приложения на простом правиле - не делать в цепи наследования анонимных конструкторов, то вопрос снимается .

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

Последний раз редактировалось kefi, 24.03.2009 в 22:26.
Ответить с цитированием
  #60 (permalink)  
Старый 24.03.2009, 23:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну это все детали, на самом деле
меня вот, например, интересует, зачем использовать классическое наследование в js. Пока я вижу одну причину: так привычнее людям, пришедшим с других языков
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с 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