Javascript 日志:未捕获范围错误:超过最大调用堆栈大小
我对一种方法有一个严重的问题。这就是我的方法:Javascript 日志:未捕获范围错误:超过最大调用堆栈大小,javascript,jquery,prototype,Javascript,Jquery,Prototype,我对一种方法有一个严重的问题。这就是我的方法: 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].c
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;
}
浏览器给了我:
未捕获范围错误:超过最大调用堆栈大小
在生产线上:
for (i in this) {
有人会有同样的问题吗?我可以创建javascript对象,如果这是任何类型的成就,它会破坏您的clonage函数:) 检查: 克隆其中任何一个。是的,它不会工作,因为循环引用。尝试调试对象并查看是否存在任何循环引用 同时尝试将克隆限制在您真正需要的范围内 编辑: 查看有关克隆的问题: 有很多答案。如果使用jQuery,请尝试接受的:
// Shallow copy
var newObject = jQuery.extend({}, oldObject);
// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
您可能会无限次或非常频繁地调用
.clonage
。Frits可能是对的。你能告诉我们你怎么称呼它吗?我只是在一个clonage调用上测试了它,它工作得很好。我是这样使用它的:window.tweetOrberByPassed=window.displayedTweetListing.clonage();它们都是对象。我在另一个脚本页面中有相同的功能,我对此没有问题。这有点奇怪。有没有其他方法可以克隆对象?我想我的方法可以做到这一点:sIt的javascript。你可以用愚蠢的方式克隆,我会编辑我的答案。第二个救了我的命!再次感谢你!var newObject=jQuery.extend(true,{},oldObject);
// Shallow copy
var newObject = jQuery.extend({}, oldObject);
// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);