📜  js 无法复制整个对象 - Html (1)

📅  最后修改于: 2023-12-03 15:17:02.491000             🧑  作者: Mango

JS 无法复制整个对象 - HTML

在 JavaScript 编程中,你可能期望可以很容易地复制一个对象,以便于对其进行修改,但是你会发现,直接使用 = 赋值语句只能复制对象的指针,而不是对象本身。因此,JavaScript 中基本上无法复制一个对象,尤其是当对象包含多个嵌套属性时。

解决办法

幸运的是,在 HTML 中,我们可以使用 data-* 属性来保存对象数据,并在需要时轻松地复制这些数据。例如:

<div id="myData"
  data-name="John"
  data-age="30"
  data-address="{ city: 'New York', zip: '10001' }"
></div>

然后,我们可以使用 JavaScript 的 getAttribute() 方法来从 data-* 属性中获取数据。例如:

var myDataEl = document.querySelector('#myData');
var name = myDataEl.getAttribute('data-name');
var age = myDataEl.getAttribute('data-age');
var address = JSON.parse(myDataEl.getAttribute('data-address'));

console.log(name, age, address);
// 输出:John 30 { city: 'New York', zip: '10001' }
注意事项
  • 由于 data-* 属性只能存储字符串类型的数据,因此我们需要使用 JSON.stringify()JSON.parse() 方法将对象转换为字符串并将其转换回对象。
  • 对于包含多个嵌套属性的对象,data-* 属性可能会变得很长,这样可能会影响 HTML 文档的可读性和性能。因此,建议仅在必要时使用该方法。
  • 注意 data-* 属性需要使用小写字母和连字符,而不能使用大写字母和下划线。
  • 如果你需要在 JavaScript 中直接使用一个对象并且不需要修改其原始数据,则不需要使用此方法。仅当你需要对对象进行修改并且需要保持原始数据不变时,才需要使用 data-* 属性来保存对象数据。