Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问函数构造函数javascript中的属性_Javascript - Fatal编程技术网

如何访问函数构造函数javascript中的属性

如何访问函数构造函数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; };

我需要通过类来操作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()
方法即可。