Javascript对象引用模式
我有一个目标:Javascript对象引用模式,javascript,performance,closures,Javascript,Performance,Closures,我有一个目标: var callback = { onValueChange: function () { }, onTabPressed: function () { }, onFocus: function () { } }; 在我的页面上,我有不同的编辑器,如textEditor和numericEditor,我分别绑定它们: function bindEditors() { var editors = $(".editor"); editors.e
var callback = {
onValueChange: function () { },
onTabPressed: function () { },
onFocus: function () { }
};
在我的页面上,我有不同的编辑器,如textEditor
和numericEditor
,我分别绑定它们:
function bindEditors() {
var editors = $(".editor");
editors.each(function (i) {
var editor = $(this);
var editorType = editor.attr("data-editorType");
if (editorType == "textEditor") {
bindTextEditor(editor);
} else if (editorType == "numericEditor") {
bindNumericEditor();
}
});
};
function bindTextEditor(editor) {
editor.bind("change", function () {
// calculate value
callback.onValueChange($(this), value);
});
};
function bindNumericEditor(editor) {
editor.bind("change", function () {
// calculate value
callback.onValueChange($(this), value);
});
};
我的问题是:
将回调
对象保留在绑定函数之外可以吗?不是每个绑定函数都会创建回调
对象的副本吗?(使用额外内存)
或者我应该将回调
对象作为参数传递给每个绑定函数吗?1)可以将回调对象保留在绑定函数之外吗
绝对是
2) 不是每个绑定函数都会创建回调对象的副本吗
没有
3) 还是应该将回调对象作为参数传递给每个绑定函数?
不。它不创建封闭对象的副本,只对同一对象进行引用,所以我不担心这一点。我绝对不会将回调作为参数传递 我不认为你写的东西有什么疯狂的错误,但是如果你想降低代码的复杂性,你可以只绑定一次,然后在绑定本身内部进行切换:
$(".editor").bind("change", function(){
var editor = $(this);
var editorType = editor.attr("data-editorType");
if (editorType == "textEditor") {
//calculate value
} else if (editorType == "numericEditor") {
//calculate value
}
callback.onValueChange(editor, value);
});
这可能不会有任何不同,但它更干净