我正在构建一个大型js库,我需要在html属性中存储一个非文字js对象的实例。由于我无法在此处编写整个js文件,因此这是一个类似的代码:
<div id="abc"></div>
<script>
function abc(){this.foo = Math.random(); ... } //The js object
document.getElementById("abc").setAttribute("data-abc",new abc()); //Store the instance
console.log(document.getElementById("abc").getAttribute("data-abc").foo); //Somehow I get undefined
</script>
我通过使用JQuery.data函数成功完成了但是我不能在这里使用jquery ..如何存储实例?感谢。
答案 0 :(得分:2)
属性只存储字符串,因此您可以使用JSON.stringify
和JSON.parse
function abc(){this.foo = Math.random();}
document.getElementById("abc").setAttribute("data-abc",JSON.stringify(new abc()));
console.log(JSON.parse(document.getElementById("abc").getAttribute("data-abc")).foo);
但是你也可以这样做(除非你真的需要能够将所有东西都转换回HTML)
document.getElementById("abc").abc = new abc();
console.log(document.getElementById("abc").abc.foo);