gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:47:32 25 4
gpt4 key购买 nike

我需要通过这样的类来操作 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); 时,它将返回未定义的属性错误。之后,我尝试在 firebug 中调用 HTML.objects 并且它确实被定义了。由于 function(...) { ... } 在实例化时被调用,它不应该能够访问 HTML.objects 属性吗?
谢谢。

最佳答案

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

var HTML = document.createElement(el);

因此,当您进行此调用时:

HTML.objects.push(this);

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

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

var HTML_INNER = document.createElement(el);

它会起作用

关于javascript - 如何访问函数构造函数javascript中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com