我有一个关于方法的严重问题。所以这是我的方法:
Object.prototype.clonage = function() {
var newObj = (this instanceof Array) ? [] : {};
for (i in this) {
if (i == 'clone') continue;
if (this[i] && typeof this[i] == "object") {
newObj[i] = this[i].clonage();
} else newObj[i] = this[i]
} return newObj;
}
浏览器给我:
Uncaught RangeError: Maximum call stack size exceeded
在线:
for (i in this) {
有人有同样的问题吗?
最佳答案
如果这是任何一种成就,我可以制作可以破坏您的克隆功能的 javascript 对象:)。
检查:http://jsfiddle.net/Bd6XL/2/
var x = {
a: 5,
b: "asdf"
};
var y = {
a: 5,
b: "asdf"
};
x.y = y;
y.x = x;
克隆其中任何一个。是的,由于循环引用,它不会工作。尝试调试您的对象并查看是否存在任何循环引用。
同时尝试将您的克隆限制在您真正需要的范围内。
编辑:
查看有关克隆的问题:What is the most efficient way to deep clone an object in JavaScript?
有很多答案。如果您使用 jQuery,请尝试接受的一种:
// Shallow copy
var newObject = jQuery.extend({}, oldObject);
// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
关于javascript - 日志 : Uncaught RangeError: Maximum call stack size exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318317/