为什么$().map生成循环引用
Why does $().map Produces Circular Reference
Chrome的array.map
运行良好,但jQuery的.map
以某种方式产生了循环引用。我看不到任何使用console.log
的循环引用的证据,但JSON.stringify在第二个块中抛出Uncaught TypeError: Converting circular structure to JSON
。
在JSFiddle上运行:http://jsfiddle.net/langdonx/vQBak/
或者检查代码:
var callback = function(index, element) {
return {
"index": index
};
};
var array1 = ["1", "2"];
var mappedArray1 = array1.map(callback);
console.log(mappedArray1);
var json1 = JSON.stringify(mappedArray1);
console.log(json1);
var jqueryArray2 = $('body > div');
var mappedArray2 = jqueryArray2.map(callback);
console.log(mappedArray2);
var json2 = JSON.stringify(mappedArray2); // Chokes with "Uncaught TypeError: Converting circular structure to JSON"
console.log(json2);
是的,我使用相同的回调,是的,ECMAScript的map
以不同的顺序传递参数,但这对本例来说并不重要,因为它们都是简单的类型(字符串、数字)。
.map()
函数返回的jQuery对象包含一个数组,而不是实际的数组,这可能是一个重要的区别。尝试调用:
var json2 = JSON.stringify(mappedArray2.get());
对.get()
的调用将返回实际的数组,而不是jQuery对象。
相关文章:
- 如何处理javascript中的循环引用,类似于Excel提供迭代限制的方式
- 装饰$errorProvider时的循环引用
- 使用javascript点击事件的循环引用
- 使用 jQuery 将 HTML 文本抓取到 JSON 中,但由于循环引用而无法字符串化
- 为什么$().map生成循环引用
- 这是否在javascript中创建循环引用
- JS - 数字循环引用
- 如何在 JavaScript 和浏览器中处理循环引用
- 可观察量相互依赖以获取自己的值 - 循环引用
- 循环引用似乎在事件处理程序函数中不起作用
- JavaScript <-> DOM 循环引用问题的精确解释
- jQuery data()如何破坏循环引用
- 多次循环引用对象,将其属性复制到Javascript/Angularjs中的其他对象
- 此模式是否会导致闭包中出现循环引用
- 我应该如何在JavaScript中设置循环引用
- javascript函数之间的循环引用
- 循环引用木偶.js
- jQuery.从循环引用扩展safe
- 循环引用阻塞了jsonwebtoken.JSON.stringify的签名原因
- 字符串化一个循环引用对象的浅拷贝