是否可以在jQuery/Javascript中存储非实例化对象的信息?
我通过包含字符串元素在Javascript中创建HTML标记。大概是这样的:是否可以在jQuery/Javascript中存储非实例化对象的信息?,javascript,jquery,string,instantiation,jquery-data,Javascript,Jquery,String,Instantiation,Jquery Data,我通过包含字符串元素在Javascript中创建HTML标记。大概是这样的: var makeButton = function (el) { 'use strict'; var config = el.attr("data-config"), dyn = $.parseJSON(config), hover = false, state = 'up', hrf = '', ... if (dy
var makeButton = function (el) {
'use strict';
var config = el.attr("data-config"),
dyn = $.parseJSON(config),
hover = false,
state = 'up',
hrf = '',
...
if (dyn.href) {
hrf = 'href="' + dyn.href + '" ';
}
...
// when all variables have been set, concat
iconspan = dyn.icon ? '<span class="ui-icon ' + icn + icp + ics + '"> </span>' : '';
textspan = '<span class="ui-btn-text">' + txt + '</span>';
innerspan = '<span class="ui-btn-inner">' + textspan + iconspan + '</span>';
btn = '<a data-role="button" data-wrapperels="span" class="ui-btn ' + hvr + cls + '" ' + data_icp + data_thm + data_min + data_inl + '>' + innerspan + '</a>';
return btn;
};
var makeButton=函数(el){
"严格使用",;
var config=el.attr(“数据配置”),
dyn=$.parseJSON(配置),
hover=false,
state='up',
hrf=“”,
...
如果(dyn.href){
hrf='href=“”+dyn.href+'”;
}
...
//设置完所有变量后,concat
iconspan=dyn.icon?“”:“”;
textspan=''+txt+'';
innerspan=''+textspan+iconspan+'';
btn=''+innerspan+'';
返回btn;
};
当全部设置完毕后,我将把字符串返回给调用函数,并将其插入正在创建的其他字符串中。我想知道是否有可能存储关于我正在创建的内容的任何信息。因为我没有在jQuery($(btn)
)中实例化,所以无法使用类似data()
的东西添加任何信息
问题:因此,如果我有一个简单的“字符串”,我有什么替代方法(如果有的话)来存储该字符串上的信息呢?我不完全确定您想要实现什么(可能值得考虑使用模板语言,比如字符串,而不是串接字符串),但是如果您想在两个分散的数据位之间创建关系,那就由一个工程师来做这项工作
// Use a JavaScript object as an Associative Array.
dataByButtonMarkupMap = {};
// Build your button markup as before.
btnMarkup = "..."
// Use the markup as a Key in the associative array, don't worry that it's massive, as long
// as it's a string (or can be coerced to one), it can be used as a key.
dataByButtonMarkupMap[btnMarkup] = "some data";
// You can now retrieve that data via the button markup
var myData = dataByButtonMarkupMap[btnMarkup];
可能值得考虑重构您的设计,这样您就可以返回一个封装模板字符串和数据的对象,而不是传递字符串,例如:
function makeButton() {
// ...
// Return an object instead of a string so you can encapsualte
// additional data alongside the template string.
return {
template: btn,
data: "some data"
}
}
希望这能有所帮助。我不完全确定您想要实现什么(可能值得考虑使用模板语言,比如字符串,而不是连接字符串),但如果您想在两个分散的数据位之间创建关系,则应该使用一个
// Use a JavaScript object as an Associative Array.
dataByButtonMarkupMap = {};
// Build your button markup as before.
btnMarkup = "..."
// Use the markup as a Key in the associative array, don't worry that it's massive, as long
// as it's a string (or can be coerced to one), it can be used as a key.
dataByButtonMarkupMap[btnMarkup] = "some data";
// You can now retrieve that data via the button markup
var myData = dataByButtonMarkupMap[btnMarkup];
可能值得考虑重构您的设计,这样您就可以返回一个封装模板字符串和数据的对象,而不是传递字符串,例如:
function makeButton() {
// ...
// Return an object instead of a string so you can encapsualte
// additional data alongside the template string.
return {
template: btn,
data: "some data"
}
}
希望有帮助
那么,如果我有一个普通的“字符串”,我有什么选择(如果有的话)来存储该字符串上的信息呢
没有。基元值不能有属性,因此不能在其上存储任何内容。要么切换到对象,要么将信息存储在其他静态结构中,其中信息由字符串值标识(当然,您的函数需要返回不同的字符串,垃圾收集有点复杂)
因此,您可以只使用String
对象包装要返回的字符串。它们在基本操作(如连接)中具有相同的行为,但您可以存储有关它们的附加信息:
btn = new String(btn);
btn.data = …;
return btn;
那么,如果我有一个普通的“字符串”,我有什么选择(如果有的话)来存储该字符串上的信息呢
没有。基元值不能有属性,因此不能在其上存储任何内容。要么切换到对象,要么将信息存储在其他静态结构中,其中信息由字符串值标识(当然,您的函数需要返回不同的字符串,垃圾收集有点复杂)
因此,您可以只使用String
对象包装要返回的字符串。它们在基本操作(如连接)中具有相同的行为,但您可以存储有关它们的附加信息:
btn = new String(btn);
btn.data = …;
return btn;
谢谢也是迄今为止我唯一想到的主意。关于模板语言:我正在尝试寻找一种更快的方法来构建某些元素,如果可能的话,在纯Javascript中,所以如果可能的话,我真的不想添加任何第三方内容。Javascript中没有“关联数组”。请不要用那个词。(参考文献:,)这两篇文章都证明JavaScript确实支持关联数组(一种数据结构,其中天映射到一个唯一的键),作者只是敦促人们不要使用数组对象。谢谢。也是迄今为止我唯一想到的主意。关于模板语言:我正在尝试寻找一种更快的方法来构建某些元素,如果可能的话,在纯Javascript中,所以如果可能的话,我真的不想添加任何第三方内容。Javascript中没有“关联数组”。请不要用那个词。(参考文献:,)这两篇文章都证明JavaScript确实支持关联数组(一种数据结构,其中天映射到一个唯一的键),作者只是敦促人们不要为他们使用数组对象。。。string.WTH是“非实例化对象”?:-)啊。。。一根绳子,很好。这差不多就是我想要的,但我不知道该怎么问。这或多或少是我想要的,但我不知道该怎么问。