如何访问函数构造函数javascript

时间:2015-05-31 10:21:25

标签: 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;
    };

    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属性? 感谢。

1 个答案:

答案 0 :(得分:2)

属性HTML.objects不存在,因为在您的构造函数范围HTML中是您在此处定义的变量:

var HTML = document.createElement(el);

所以,当你拨打这个电话时:

HTML.objects.push(this);

您正在尝试访问刚刚声明的HTML变量的proprey。

实际上,如果您尝试将第一行替换为:

var HTML_INNER = document.createElement(el);

它会工作