![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Вот, что имеется в виду: Есть dynamic class Foo. Создаем его инстанс -> var foo = new Foo();
дальше создаем у него свойство таким образом: foo.someProp = 'abc'; ни __resolve ни addProperty в таком случае не вызывается, а что же тогда вызывается? Как можно узнать, что произошла попытка создать свойство?
__________________
Hell is the possibility of sanity |
|
|||||
|
ветеран форума
|
1. Это действительно так необходимо? Нельзя ли изменить структуру проекта так, чтобы избежать добавления свойств в рантайме?
2. Я бы сделал так: написал бы класс с названием типа PropertyAdder и статическим методом addProperty(instance, property, value) . А при вызове метода делал бы экземпляру класса __resolve или addProperty - как захочется
__________________
4am is time to rock |
|
|||||
|
Modus ponens
|
XMLC.prototype.__resolve = function (p) {
if (!isNaN(p)) {
return this._childNodes[p];
} else if (p.charAt(0) == ATTRIBUTE_ACCESSOR) {
var attr:String = p.slice(1, p.length);
if(attr.length){
if (this._attributes[attr] != undefined) {
return this._attributes[attr];
} else {
this._attributes[attr] = '';
return this._attributes[attr];
}
} else {
return this._attributes;
}
} else if(p instanceof String) {
for (var i:Number = 0; i < this.childNodes.length; i++) {
if (this._childNodes[i].nodeName == p) {
return this._childNodes[i];
}
}
this._childNodes.push(new XMLC(p));
return this._childNodes[this._childNodes.length - 1];
}
return undefined;
}
T.e. если делать так: хml.@['attributeName'] = 'abc'; то работает, но это не красиво =)
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 18.05.2008 в 20:06. |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Резидентных методов отловить данное событие нет.
Однако можно организовать циклическую проверку на существование свойства в объекте класса, хотя это вариант расточителен. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|