我是StackOverflow的新手,不确定是否在这里问这个问题,所以如果我在错误的地方问这个问题,请告诉我。
我想在javascript(例如ASP.NET)中实现dataSource
。因此,我创建了一个具有以下功能的jQuery插件:
$.getUniqueString = function (prefix) {
if (!prefix) prefix = "s";
for (var loopIndex = 0; true; loopIndex++) {
if (typeof window[prefix + loopIndex] != "undefined") { // if sourceId exists
continue;
}
prefix = prefix + loopIndex;
break;
}
return prefix;
}
$.fn.dataSource = function (source) {
var sourceId;
if (!source) {
sourceId = $(this).attr("data-source-id");
return window[sourceId];
}
sourceId = $.getUniqueString();
$(this).attr("data-source-id", sourceId);
window[sourceId] = source;
}
这个插件工作正常。到目前为止,我还没有遇到任何困难。这是一个工作示例的链接(提琴):http://jsfiddle.net/Gu2KQ/
但是,我的问题是:
我的代码是否足够安全,以使客户端浏览器不会崩溃?
有什么建议可以进一步优化此代码?
还有其他选择可以更好地实现相同功能吗?
任何帮助,将不胜感激。
最佳答案
此处无需评估。您可以获取全局变量并将其设置为window
对象的属性。
$.getUniqueString = function (prefix) {
if (!prefix) prefix = "s";
for (var loopIndex = 0; true; loopIndex++) {
if (typeof window[prefix + loopIndex] != "undefined") { // if sourceId exists
continue;
}
prefix = prefix + loopIndex;
break;
}
return prefix;
}
$.fn.dataSource = function (source) {
var sourceId;
if (!source) {
sourceId = $(this).attr("data-source-id");
return window[sourceId];
}
sourceId = $.getUniqueString();
$(this).attr("data-source-id", sourceId);
window[sourceId] = source;
}