我正在对jQuery.data()进行一些测试,并且我正在尝试创建对某个数据键的本地引用,我希望它可以在本地更改并仍然影响“外部”.我认为用一个例子会更好,因为我在jsFiddle上发布的半长代码
http://jsfiddle.net/esbenp/p4kt2/22/
我希望的输出是:
{1: {length: 1}, total: 1}
但只有length属性受到递增局部变量的影响:
{1: {length: 1}, total: 0}
我该怎么办?
如果你在.data()中存储一个对象(或数组),那么你实际上是存储了对它的引用,所以如果你这样做:var obj = { key: 'value' } $(el).data('obj') = obj; obj.key = 'new value';
$(el).data(‘obj’).key也将是新值,因为它是同一个对象.
但是,如果存储的值是普通类型(例如数字或字符串),则将存储其副本:
var n = 5; $(el).data('obj') = n; n++;
$(el).data(‘obj’)仍为5.