Мне нужно манипулировать HTML-теги через класс, как, например:Как получить доступ к собственности внутри функции конструктора Javascript
/*
* Begin: HTML Class
*/
HTML = function(el, property) { // Construct
this.el = el;
this.property = new Array;
var HTML = document.createElement(el);
this.element = function() {
return HTML;
};
HTML.objects.push(this);
if (typeof property == "object")
for (i in property)
this.addProperty(i, property[i]);
};
HTML.objects = new Array; // Registers all new HTML objects.
// Adds a new property to HTML current element.
HTML.prototype.addProperty = function(name, value) {
this.property[name] = value;
this.getHTML()[name] = value;
};
// Retrieves current HTML element.
HTML.prototype.getHTML = function() {
return this.element();
};
// Clones current HTML objects with same construct arguments.
HTML.prototype.clone = function() {
return new HTML(this.el, this.property);
};
/*
* End: HTML Class
*/
Каждый раз, когда new HTML(...)
называется, вновь созданный экземпляр должен храниться в HTML.objects
, который является статическим свойством HTML, роль которого заключается в отслеживании всех объектов HTML. Но теперь, когда он достигнет HTML.objects.push(this);
, он вернет неопределенную ошибку свойства. После этого я попытался вызвать HTML.objects
в firebug, и он определенно определен. Как function(...) { ... }
вызывается при создании экземпляра, не должен ли он иметь доступ к свойству HTML.objects
?
Спасибо.
Я бы настоятельно рекомендовал разрешить имя столкновения между '' HTML' и HTML'. – Bergi
Также 'HTML' является особенно плохим именем для * * DOM * * элемента * (что не имеет никакого отношения к разметке HTML). Некоторые из них относятся к методу '.getHTML()', просто используйте '.element()' one. – Bergi