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

标签 jquery reference scope

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

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

我希望的输出是:

{1: {length: 1}, total: 1}

但只有长度属性会受到局部变量增量的影响:

{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。

关于jquery - 创建对 jQuery.data 键的本地引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759607/

相关文章:

javascript - 将每个直接的对象组(包括文本)包装在新的 div 中,但 div 除外

c# - 如何在jqxgrid中的代码后面使用数据表

javascript - 如何选择下拉列表项

java - 了解引用处理程序线程

c - 局部变量丢失其值 : selection sort algorithm

jquery - 在同一表行中获取下一个下拉组合框的最佳 jquery 选择器是什么

javascript - 如何获取 javascript 对象引用或引用计数?

c++ - 如何使用 "new"分配函数内点引用参数的内存

angularjs - Angular $scope 数据不会更新

Trait 中的 Scala 对象