![]() |
2Sergey"iLoveYou"
сергей, с примером уже разобрались давно :) вопрос только зачем он такой странный :) 2dm_nev аа... ну вот. я тебе это и сказал только не так подробно... но, имхо, этот пример все только запутывает... я думаю надо было показать наследование отдельно а вписывание методов отдельно... (хотя кто я такой чтобы ему советовать :)) ) |
Цитата:
Я что-то совсем запутался... :eek: Скажите просто что делает строчка Код:
this.$_base = Pet; |
2 Nox Noctis, уже разобрались?
Цитата:
Nox Noctis, я понимаю, что у тебя чувство, будто ты седьмой раз мне одно и тоже повторяешь, но я ей-ей не понимаю. |
спасибо
Ребята, тут все это знают, но я скажу еще раз:
Код:
this.$_base = Pet;Все верно? Спасибо большое :D |
хмм... ну все же написано уже :)
а у дебройля вообще длинно и подробно разжевано... смотри: Код:
Pet = function (name) {в конструкторе Дог смотрим видна ли функция (ЭТО НЕ МЕТОД) Pet в данной области видимости имен. потом проверяем то же самое для this.Pet... this.Pet естесственно не видна. если бы мы сделали так: Код:
Pet = function (name) {а в примере дебройля именно это и происходит.. мы добавляем к экземпляру класса Дог метод Пет.. просто потом его сразу удаляем после использования. |
Nox, понятно :)
меня пример смутил наличием Dog.prototype.__proto__ = Pet.prototype; вопрос, оказывается, в другом был. :) |
Спасибо большое, Nox Noctis ты мне очень помог. Я наконец-то понял как это работает. Метод - просто свойство, принадлежащее классу, иначе он (метод) работать не будет.
Хотя я встречал исходники, где определяется функция (метод), а потом к ней (к нему) обращаются все кто захочет - любые переменные. Например в первом кадре определяется метод formatbytes (bytes); для форматирования bytes в дружественный размер (57 Kb, 1.3 Mb), а во втором кадре левая переменная, содержащая getBytesLoaded (); обращается к formatbytes (bytes); и все работает! Это не против правил ООП? Ведь переменная, содержащая getBytesLoaded (); не имеет метода formatbytes (); в своем свойстве. Если я что-то напутал, то я уверен, что все равно соображу - рано или поздно. А вот если ты уже засыпаешь читая мои вопросы - забудь. Спасибо большое. :) |
Цитата:
Цитата:
ладно фиг с ними с формулировками, главное чтобы ты сам понимал что сказал :)) методом называется функция, ссылка на которую хранится внутри объекта. блягодаря тому что она вызывается из объекта, указатель this указывает на объект из которого она вызвана. но функция может и не быть привязана к объекту. можно вызывать функцию саму по себе. например проверь: Код:
test = function () {если ты определяешь функцию без указания объекта в котором ее прописываешь, то она автоматически становится МЕТОДОМ того мувиклипа в котором находится код. например, если напишем в руте: function test () { // ... } то тест станет методом рута. и this внутри нее будет указывать на _левел0 |
Dear Nox Noctis, я решил больше ничего не писать в этом топике пока не стану супер ООПером (ужас), чтобы не нервировать тебя и людей, незаслуживающих такого непонимания с моей стороны...
Спасибо большое тебе (и не только тебе)... ребята, наверное мне нужно больше почитать книг "мы купили комьютер" или "видоус для чайников", так как я пребываю в полной уверенности, что this в методе DOG указывает на rover (будущий экземпляр DOG), и будучи полноценным экземпляром - может вызывать методы, в том числе PET. Спасибо ребята, я все распечатал и обязательно осилю - ваша помощь не напрасна :) |
гррррр... :))
в этом примере ПЕТ ЭТО НЕ МЕТОД КЛАССА ДОГ понимаешь ? :) в описании класса нету такого метода. его ВРЕМЕННО делают методом объекта РОВЕР (в результате чего, как ты и сказал, this внутри Pet'а указывает на ровера) но если бы этого не сделали (всей этой ботвы с переменной $_base) то внутри Pet'а this указывал бы на _level0, где и прописан изначально... |
| Часовой пояс GMT +4, время: 22:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.