Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在jQuery/Javascript中存储非实例化对象的信息?_Javascript_Jquery_String_Instantiation_Jquery Data - Fatal编程技术网

是否可以在jQuery/Javascript中存储非实例化对象的信息?

是否可以在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

我通过包含字符串元素在Javascript中创建HTML标记。大概是这样的:

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 + '">&nbsp;</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是“非实例化对象”?:-)啊。。。一根绳子,很好。这差不多就是我想要的,但我不知道该怎么问。这或多或少是我想要的,但我不知道该怎么问。