![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
this.setMyObjectClass = function() {
delete this.setMyObjectClass;
var MyObject = function () {
this.init();
};
var tmp = MyObject.prototype.__proto__=Object.prototype;
tmp.init = function() {
};
tmp.addProperty("val", function () {
return this.value;
}, function (value) {
this.value = value;
});
tmp.toString = function() {
return this.val;
};
_global.MyObject = MyObject;
ASSetPropFlags(_global, 'MyObject', 7, 1);
};
this.setMyObjectClass();
//
_root["item"] = new MyObject();
_root["item"]["val"] = "item_17";
_root["item"]["id"] = "17";
trace(_root["item"]);
|
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
а вообще этот вопрос - следствие неправильной организации проекта.
дефолтная переменная задается для класса. если у тебя разное поведение объектов при одинаковом обращении, следовательно тебе нужно делать разные классы. вот и всё. |
|
|||||
|
Цитата:
вообще подход неправильный был. мне теперь просто, уже отстраненно от проекта, интересно сделать что-то вроде: _root.item = new Object(); _root.item.property01 = "это оно!"; _root.item.setDefaultProperty ("property01"); // вот такую функию сделать хочу trace(_root.item); // "это оно!" |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Object.prototype.setDefaultProperty = function(str) {
this.toString = function() { return this[str]; }; }; _root.item = new Object(); _root.item.property01 = "это оно!"; _root.item.setDefaultProperty("property01"); trace(_root.item) |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
можно еще добавить
this.valueOf = function() { return this[str]; }; |
|
|||||
|
оно самое! то что я и хотел (:
спасиба bitSky! вопрос: что дает второй вариант? отличий в работе я не заметил с ним или без него.. а trace (_root.item.valueOf()) работает в обоих случаях.. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
не все методы при работе с объектами
выдергивают его значение с помощью toString() иногда для преобразования типов объектов используется valueOf(). например сравнение двух дат elapsed = any_date < today_date сначала приводит даты к числовому типу с помощью valueOf и затем уже сравнивает два числа. хм.... это я с недосыпу... говоря что приводит даты к числовому типу, ввожу в заблуждение... дата (и объекты некоторых других классов) живут в простом (числовом или строковом) виде а для юзверя возвращаются в разном другом виде с помощью методов. опять жа посмотри на Date для примеру. это класс имеющий "простой вид", т.е. в его основе данные простого типа (число миллисекунд с 1970 года... не помню точно...) - надеюсь я тебя окончательно запутал ![]() |
|
|||||
|
нет (:
твои надежды не оправдались, мне все понятно. я так и предполагал что там замороки с типами, но не нашел подходящего чтобы проверить. теперь все ясно. еще раз спасиба! щас попробую сделать чтоб работало в обратную сторону.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|