如何访问函数构造函数javascript中的属性
我需要通过类来操作HTML标记,如下所示:如何访问函数构造函数javascript中的属性,javascript,Javascript,我需要通过类来操作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; };
/*
* 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
*/
每次调用newhtml(…)
时,新创建的实例必须存储在HTML.objects
中,这是HTML的一个静态属性,其作用是跟踪所有HTML对象。但是现在当它到达HTML.objects.push(这个)代码>它将返回未定义的属性错误。之后,我尝试在firebug中调用HTML.objects
,它被明确定义。由于在实例化时调用了函数(…){…}
,它是否应该能够访问HTML.objects
属性?
谢谢。适当的HTML.objects
不存在,因为在构造函数的作用域中HTML
是您在此处定义的变量:
var HTML = document.createElement(el);
所以,当你打这个电话时:
HTML.objects.push(this);
您正试图访问刚刚声明的HTML
变量的属性
事实上,如果您尝试将第一行替换为:
var HTML_INNER = document.createElement(el);
会有用的哇!现在我感到羞愧。我用另一个工作正常的物体测试它。但在另一个对象中,我并没有定义一个与对象同名的内部变量。非常感谢。:)另一个建议是:构造函数参数和对象字段使用相同的名称“property”,但不将参数分配给构造函数中的字段。这可能会导致误解。我强烈建议解决HTML
和HTML
之间的名称冲突。而且HTML
对于DOM元素来说是一个特别糟糕的名称(与HTML标记无关)。有些方法使用.getHTML()
方法-只需使用.element()
方法即可。