创建对jQuery.data键的本地引用

Esb*_*ben 3 jquery scope reference

我正在做一些测试jQuery.data(),我正在尝试创建一个对某个数据键的本地引用,我希望它可以在本地更改并仍然影响"外部".我认为用一个例子会更好,因为我在jsFiddle上发布的半长代码而不是这里:

http://jsfiddle.net/esbenp/p4kt2/22/

我希望的输出是:

{1: {length: 1}, total: 1}
Run Code Online (Sandbox Code Playgroud)

但只有length属性受到递增局部变量的影响:

{1: {length: 1}, total: 0}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Aln*_*tak 5

如果你存储了一个对象(或数组),.data()那么你实际上是存储了一个引用,所以如果你这样做:

var obj = { key: 'value' }
$(el).data('obj') = obj;
obj.key = 'new value';
Run Code Online (Sandbox Code Playgroud)

$(el).data('obj').key也将是new value,因为它是同一个对象.

但是,如果存储的值是普通类型(例如数字或字符串),则将存储其副本:

var n = 5;
$(el).data('obj') = n;
n++;
Run Code Online (Sandbox Code Playgroud)

$(el).data('obj') 仍然是5.