【发布时间】:2011-03-12 00:41:26
【问题描述】:
我不完全确定如何在 JS 中实现 OOP 概念。
我有一个完全在其构造函数中声明的类:
function AjaxList(settings)
{
// all these vars are of dubious necessity... could probably just use `settings` directly
var _jq_choice_selector = settings['choice_selector'];
var _jq_chosen_list = settings['chosen_list'];
var _cb_onRefresh = settings['on_refresh'];
var _url_all_choices = settings['url_choices'];
var _url_chosen = settings['url_chosen'];
var _url_delete_format = settings['url_delete_format'];
var jq_choice_selector_form = _jq_choice_selector.closest("form");
if (DEBUG && jq_choice_selector_form.length != 1)
{
throw("There was an error selecting the form for the choice selector.");
}
function refresh()
{
_updateChoicesSelector();
_updateChosenList();
_cb_onRefresh();
};
AjaxList.prototype.refresh = refresh; // will this be called on all AjaxLists, or just the instance used to call it?
// AjaxList.refresh = refresh; // will this be called on all AjaxLists, or just the instance used to call it?
// ...
}
有多个 AjaxList 实例。当我在其中一个上调用refresh() 时,我只希望那个列表能够自行刷新。在以下情况下:
term_list = AjaxList(settings);
term_list.refresh();
refresh() 调用似乎使所有 AjaxLists 刷新自己。这样做的正确方法是什么?
我正在使用 jQuery,如果它有什么不同的话。
【问题讨论】:
-
您对该语言(javascript、jQuery、类)有一些严重的误解。看我的回答,看清楚。
标签: javascript oop prototype public-method