我組建了一個JavaScript對象稱爲ListBox
這需要一個二維數組,並輸出與固定的列標題,滾動內容的表,是排序通過單擊列標題。爲了使HTML包括事件處理程序,其調用該對象的自己的方法,對象需要知道自己的實例變量名,比如....對象的構造函數 - 獲取實例變量的名字
var MyList = new ListBox();
設置列&內容的適當方法後生成HTML ...
...
<td class="ListBox_ColumnTitle" onclick="MyList.SortByColumn(1)">...</td>
...
通過搜索在這裏計算器,我發現下面的代碼,並適應它稍微所以它找到對象的正確實例:
for (var v in window) {
try {
if (window[v] instanceof ListBox) { InstanceName = v; break; }
}
catch (e) { }
}
但是這在構造函數內部不起作用 - 它根本找不到實例。它後來工作正常,但我想能夠在構造函數中做到這一點,使使用ListBox的代碼更簡單 - 這可能嗎?
此外,我意識到這將是簡單得多,只是傳遞變量名稱作爲構造函數的參數,但我想,如果我能避免這種情況。
真正的問題是糟糕的設計。代碼應該對調用代碼一無所知。這是調用代碼的工作。 –