Просмотр полной версии : Как обратится к свойствам объекта в самом объекте
Akopalipsis
17.12.2013, 17:35
Возможно ли обратится в динамическом обьекте к его же свойствам?
var map:Object = { a:10,b:15,c:map['a']+map['b']};
...наверное поспешил и не подумал, что на момент обращения, обьект ещё не создан.
Но это же я :)
var map:Object = { a:10,b:15 }
map.c = map.a + map.b;
Так можно :)
При создании объекта, наверно нет.
Akopalipsis
17.12.2013, 17:43
Да, так можно, но я хотел сделать, что то типа "карты для обработки" обьектов с однотипными свойствами.
Просто два обьекта нужно делать. Точнее один уже есть, а второй создавать.
Добавлено через 3 минуты
Жалко только, что динамика медленнее. Есть способ её ускорить?
caseyryan
17.12.2013, 18:13
Есть способ её ускорить?
Зачем?
Ваш вопрос звучит так, как-будто скорость там на столько низкая, что можно вздремнуть, пока объект создается.
На самом деле в 99% случаев, эта разница в скорости не играет вообще никакой роли
А ускорить, если уж это нужно, можно отказом от динамики
обьект
обЪект, обЪект, обЪект, обЪект, обЪект!
Akopalipsis
20.12.2013, 00:49
Есть способ обратится динамически к локальной переменной?
private function fun(a:Number):void
{
var b:Number;
///обратится от сюда к а и b ?
}
обЪект, обЪект, обЪект, обЪект, обЪект!
Объект! :)
private function fun(a:Number):void
{
var b:Number;
trace(a,b) // ok
}
Akopalipsis
20.12.2013, 13:50
in4core Большое Спасибо!)
Честно говоря не понял за что спасибо...
Akopalipsis
20.12.2013, 14:17
Честно говоря не понял за что спасибо...
Так оно с улыбкой :) Ну или хотя бы за то, что развеселили.
Ну а что касается вопроса, то я спрашивал о -
private function fun(a:Number):void
{
var b:Number;
///обратится от сюда к ['а'] и ['b'] ?
}
Мне казалось, что если так можно обратится к свойствам класса, то возможно, если указать путь к методу, который является - обьектом ( или методы не объекты? ), то можно обращаться к локальным переменным.
MikroAcse
20.12.2013, 14:27
Нет, к локальным нельзя обращаться.
Советую никогда не использовать динамические классы.
Всегда есть выход с объектами или переменными.
Akopalipsis
20.12.2013, 14:34
Советую никогда не использовать динамические классы.
Всегда есть выход с объектами или переменными.
Да, Спасибо! Классы мне и не нужны, просто я уточнил, можно так или нет.
Немного не понял только о - объектах и переменных... Если обьекты, это классы, а не обьекты new Object(),
то динамика иногда нужна.
Так оно с улыбкой :) Ну или хотя бы за то, что развеселили.
Ну а что касается вопроса, то я спрашивал о -
private function fun(a:Number):void
{
var b:Number;
///обратится от сюда к ['а'] и ['b'] ?
}
Мне казалось, что если так можно обратится к свойствам класса, то возможно, если указать путь к методу, который является - обьектом ( или методы не объекты? ), то можно обращаться к локальным переменным.
Может я что-то не понял, но обратиться к переменным (этого класса) можно и так:
private function fun(a:Number):void
{
var b:Number;
trace(b);// локальная переменная этой функции
trace(this.b);// переменная класса (если она конечно создана)
}
Akopalipsis
20.12.2013, 15:23
samana я вот о чем спрашивал -
private var target:Sprite;
private function test():void
{
var object:Sprite;
trace(this['target']);//к target я могу обратится
trace(this['object']);//а к object нет
}
Конечно, ведь вы ищете object в this (в этом классе), а object создан лишь временно в данной функции. А зачем такие сложности? Что мешает обратиться к object напрямую?
Akopalipsis
20.12.2013, 15:32
Спросил я это, только для того, чтобы знать можно так или нет.
И что this на область класса указывает я тоже знаю, но мне не понятно вот что - метод, это объект?
И если да, то почему нельзя обратится в самом методе к его локальной переменной, типа test['object'].
Хотя на уровне понимания я понимаю, но вот однозначно нет.
А, я только сейчас понял, о чём вы.
MikroAcse
20.12.2013, 15:51
Немного не понял только о - объектах и переменных...
Если вам нужна динамика, то делаете не весь класс таким, а объект внутри него:
MyClass {
var data:Object = {a:1, b:2};
}
Или, еще лучше, сделать переменными:
MyClass {
var a:int = 1;
var b:int = 2;
}
в самом методе к его локальной переменной, типа test['object'].
Потому что метод - это не объект, у него не свойств (почти).
Но вы можете обратиться к аргументам:
function a(b:int = 0, c:int = 2):void {
trace(arguments[0]); // 0
}
Akopalipsis
20.12.2013, 16:03
Потому что метод - это не объект, у него не свойств (почти).
Спасибо!
Но вы можете обратиться к аргументам:
И Спасибо!
Конечно, ведь вы ищете object в this (в этом классе)
Чуть уточню, до точности "наоборот". this указывает на инстанс, никак не на класс.
Спасибо за поправку. Согласен.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.