![]() |
Уточнения: про this и отличия protected, private
1. this. используется только для членов классов: переменных и ссылок на объект? Я так понял, что переменная не может быть "сама по себе", даже если она используется в методе того класса, в котором объявлена. в отличие от с++.
2. Перевод Мука: "Метод экземпляра, объявленный с использованием модификатора protected ... доступен только для кода класса, содержащего описание этого метода, или для кода потомков этого класса..." и "Метод экземпляра, объявленный с использованием модификатора private ... доступен только для кода класса, содержащего описание этого метода." Разница только в том, что private нельзя вызвать из потомков? Не считая запрет доступа из того же самого или других пакетов. |
1."Сама по себе":
trace(this); var a = this; MyFunction(this); Вы это имели в виду? 2. AS3 хэлп: Цитата:
|
по 1.
Код AS3:
по 2. спасибо. |
Аа.. почему же только через this? Можно и с this и без него.
Код AS3:
|
Лучше с ним)
|
this - указатель на объект, в контексте которого сейчас выполняется код.
он может быть и "сам по себе" - this можно передать как аргумент при вызове функции и тд и тп. |
Цитата:
|
функция внутри метода, внутри нее this будет указывать на метод, если не ошибаюсь
|
Цитата:
Разницу вижу только в Код AS3:
|
Цитата:
|
Цитата:
что по мне так this перед переменной это дикость. оправданное приминение только как для передачи параметра - указатель на себя любимого. |
Цитата:
Добавлено через 1 минуту Цитата:
|
Не знал, что это холивар. Я так понял, что это холивар как раз из-за того, что никто не в курсе, важен ли this для работы виртуальной машины?
|
Почистил тему от словесного недержания. Писать о своем предпочтении использования this не надо, тема не об этом.
Цитата:
|
когда небыло ООП и классов, программировали так:
Код AS3:
Но, если есть сомнения в квалификации коллег или вы пишите на PHP ставьте this в обязательном порядке. :) |
Цитата:
|
Использовать this или нет – дело вкуса. Однако есть моменты, когда оно очень помогает. Один из них – разрешение области видимости. Взглянем, например, на следующий класс:
Код AS3:
Также this используется для передачи ссылки на себя (например, parent.removeChild(this)). Без this этого не сделать никак. Однако следует учитывать, что в случае вызова функции с помощью call или apply this внутри неё может ссылаться, вообще говоря, куда угодно. Так что, никакой это не анахронизм, а важный элемент языка. |
Цитата:
Код AS3:
ой. писАл ответ с 1ой страницы, не заметил, что есть 2ая, на которой все это уже объяснили... |
"когда небыло ООП и классов"
а когда-то и палками-копалками землю возделывали, и наверно было много противников "революции", когда какой-то мудак приделал к палке камень... но смею напомнить, в связи с тем, что палка копалка была менее удобна она вымерла со временем ;) |
Цитата:
Цитата:
Цитата:
|
this соотносится только с экземплярами, никак не с классами. this указывает на текущий экземпляр, в котором был упомянут.
|
Цитата:
Код AS3:
|
Цитата:
Цитата:
|
Возвращает ссылку на этот экземпляр. Упоминание структуры объекта в данном контексте лишено смысла.
|
Цитата:
|
Нене, копия не создается. Создается только ещё одна ссылка на экземпляр.
То есть в моём примере Код AS3:
|
Короче, this это Я.
|
Так. У нас есть экземпляры одного класса: а, с.
Код AS3:
|
a и c после этого указывают на 1 и тот же объект
|
TommyLee, у Вас в c++ не было ссылок? или они имели особое значение для Вас?
Цитата:
Добавлено через 30 минут так как меня обещали в очередной раз покарать модераторы, за неполноценность предоставленной информации, то вынужден расписать "корень зла" для народа. в объектных языках, всё - это объекты. а объект - это всегда экземпляр класса. и, входя в рекурсию, класс - это объект ( так как он входит в множество "всё" ). |
читал о безопасности, что напрямую работа с памятью запрещена. получается в as3 this - безопасный аналог указателей и ссылок в языках типа с/с++.
|
нет. просто все виртуальные машины в этом мире, владеющие GC, предоставляют работу только со ссылками, за редким исключением со стороны парочки языков. любой объект - это ссылка на него. за исключением, так называемых, примитивных типов, которые, наоборот, всегда копируются. к примитивным типа обычно относятся int, uint, Number, String, Boolean.
|
Раз все ссылка, то как пишется прототип функции, у которого аргумент - экземпляр класса?
Код AS3:
Код AS3:
|
С прототипами поаккуратнее =) В as3 они тоже есть
Код AS3:
|
this - это существующая ссылка на объект. причём объект, который является контекстом вызова метода. требовать его в аргументах к методу, это верх маразма. он существует всегда. я вот не понимаю, что в вашем понимании ссылка. так c моими представлениями, оно явно расходятся. для меня, ссылка - это сущность, которая позволяет работать с экземпляром, какого либо объекта. а для Вас?
|
Цитата:
Цитата:
void DoSmth(MyClass& obj); void main() { //....... MyClass my; DoSmth(my); //.......... }; Каков аналог в as3? |
тоже самое, только & не нужно. все передаётся как ссылка.
|
Хм, тогда как понять пример SamFR, который он привел на второй странице:
Код AS3:
|
Ну дык это параметр, передаваемый методу. А не имя аргумента в принимающем методе.
|
а что тут не понятного? вызывается метод removeChild у объекта parent, в который передаётся ссылка this.
|
| Часовой пояс GMT +4, время: 12:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.