Вопрос по jquery, javascript – Почему jQuery Extend Deep Copy не рекурсивно копирует объект?
Я искал повсюду и нашел похожие вопросы с ответами, которые действительно не решали мою проблему, поэтому я извиняюсь, если это кажется повторением, но из моих экспериментов стало ясно, что функция глубокого копирования jQuery на самом деле не работает так, как она работает. описано (или, возможно, я неправильно понял его описание).
Вот пример, демонстрирующий проблему, с которой я сталкиваюсь: http://jsfiddle.net/wcYsH/
Или это для скачивания: https://github.com/kevroy314/jQuery-Extend-Test
Почему данные в предыдущей копии изменяются при манипуляциях с глубокой копией?
jQuery
.clone
было то, что я исследовал изначально, но я виделthisError: User Rate Limit Exceeded
user986122
jQuery
& APOS; s.clone
вместо?
Explosion Pills
Я смотрю на исходный код для jQuery 1.7.2 для расширения.
https://github.com/jquery/jquery/blob/master/src/core.js
И я заметил строку:
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))
должен оценить, чтобыtrue
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Теперь в isPlainObject кажется, что эти строки должны быть оценены. (где есть hasOwnhasOwn = Object.prototype.hasOwnProperty
try {
// Not own constructor property must be Object
if ( obj.constructor &&
!hasOwn.call(obj, "constructor") &&
!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
} catch ( e ) {
// IE8,9 Will throw exceptions on certain host objects #9897
return false;
}
И там, где он приходит к выводу, что это не «обычный объект».
Это имеет смысл, когда вы рассматриваете объекты с конструкторомprobably ought to be created via that constructorError: User Rate Limit Exceeded