2009-06-23 4 views
0

Я знаю, что есть еще один вопрос, связанный с копированием объектов в JavaScript here, но код, который они предоставляют, не работает с greasemonkey. Из того, что я был в состоянии проследить, код для принятого ответ умирает/останавливается на линии:Какая функция копирования объектов JavaScript работает с greasemonkey?

var temp = new obj.constructor();

Есть ли способ узнать, что пошло не так?

Это не обязательно. Я использую ту же функцию для копирования объекта, но мне бы хотелось, чтобы что-то работало. Вы знаете какую-то функцию?

ответ

0

Это похоже на работу:

var a = { 
    yo: 'hello', 
    do: function() {alert(this.yo + ' world');} 
}; 

var cloneStructor = function() {}; 
cloneStructor.prototype = a; 

var b = new cloneStructor(); 
a.yo = 'goodbye'; 
b.yo = 'what\'s up'; 

a.do(); 
b.do(); 
+0

не будет ли это быть просто ссылка, а не точной копией? – Geo

+0

В приведенном примере используется ключевое слово «новое» и, похоже, работает - a и b заканчиваются разными свойствами. Другой подход, который я нашел, использует JSON.eval (JSON.stringify (cloneMe)). Возможно, стоит попробовать. В противном случае вы можете вручную перебрать все свойства и восстановить их. – steamer25