javascript - 对象构造函数 - 获取实例变量的名称

标签 javascript oop

我正在组合一个名为 ListBox 的 JavaScript 对象,它采用二维数组,并将其输出到具有固定列标题、可滚动内容的表格中,并且可以通过单击列标题进行排序。为了让 HTML 包含调用对象自己方法的事件处理程序,对象需要知道它自己的实例变量名称,例如......

var MyList = new ListBox();

设置列和内容后,适当的方法将生成 HTML...

...
<td class="ListBox_ColumnTitle" onclick="MyList.SortByColumn(1)">...</td>
...

通过在 stackoverflow 上搜索,我找到了以下代码,并对其进行了稍微修改,以便找到对象的正确实例:

for (var v in window) {
    try {
        if (window[v] instanceof ListBox) { InstanceName = v; break; }
        }
    catch (e) { }
    }

然而,这在构造函数内部不起作用 - 它根本找不到实例。之后它工作正常,但我希望能够在构造函数中执行此操作,以使使用 ListBox 的代码更简单 - 这可能吗?

此外,我确实意识到将变量名称作为构造函数的参数传递会更简单,但如果可以的话,我想避免这种情况。

最佳答案

您可以通过在脚本中绑定(bind)事件并且不输出 onclick 属性来完全避免此问题。

function ListBox() {
    var that = this;

    // do your existing stuff

    var element = ...; // whatever you're currently doing to create the html
    element.onclick = function () {
        that.SortByColumn(1);
    };
}

关于javascript - 对象构造函数 - 获取实例变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232826/

相关文章:

c++ - 是否有必要为派生类创建一个复制构造函数?

python - Python设置父类子类自动继承

design-patterns - 观察者模式策略?

javascript - 使用 Salesforce apex 代码的纪元时间

javascript - 获取上一个 td 中的文本

javascript - 获取 xmlHTTP 请求不起作用

javascript - 使用带有嵌套对象的 javascript 和 json 发布表单

javascript - 在 Javascript 构造函数中将键/值对象作为参数传递

java - 一个类怎么会有自己类型的成员,这不是无限递归吗?

javascript - 需要一个带有 multipart/form-data 的 AJAX Javascript 库