我需要通过类操作HTML标记:
/*
* 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
并且它是明确定义的。在实例化时调用function(...) { ... }
,它是否应该能够访问HTML.objects
属性?
感谢。
答案 0 :(得分:2)
属性HTML.objects
不存在,因为在您的构造函数范围HTML
中是您在此处定义的变量:
var HTML = document.createElement(el);
所以,当你拨打这个电话时:
HTML.objects.push(this);
您正在尝试访问刚刚声明的HTML
变量的proprey。
实际上,如果您尝试将第一行替换为:
var HTML_INNER = document.createElement(el);
它会工作