Глубокая копия по производительности: ранжировано от лучшего к худшему
Глубоко скопируйте массив строк или чисел (один уровень - без указателей):
Когда массив содержит числа и строки - такие функции, как .slice (), .concat (), .splice (), оператор присваивания «=» и функция клона Underscore.js; будет делать глубокую копию элементов массива.
Если переназначение имеет самую высокую производительность:
var arr1 = ['a', 'b', 'c'];
var arr2 = arr1;
arr1 = ['a', 'b', 'c'];
И .slice () имеет лучшую производительность, чем .concat (), http://jsperf.com/duplicate-array-slice-vs-concat/3
var arr1 = ['a', 'b', 'c']; // Becomes arr1 = ['a', 'b', 'c']
var arr2a = arr1.slice(0); // Becomes arr2a = ['a', 'b', 'c'] - deep copy
var arr2b = arr1.concat(); // Becomes arr2b = ['a', 'b', 'c'] - deep copy
Глубоко копировать массив объектов (два или более уровней - указатели ссылок):
var arr1 = [{object:'a'}, {object:'b'}];
Напишите пользовательскую функцию (имеет более высокую производительность, чем $ .extend () или JSON.parse):
function copy(o) {
var out, v, key;
out = Array.isArray(o) ? [] : {};
for (key in o) {
v = o[key];
out[key] = (typeof v === "object" && v !== null) ? copy(v) : v;
}
return out;
}
copy(arr1);
Используйте сторонние служебные функции:
$.extend(true, [], arr1); // Jquery Extend
JSON.parse(arr1);
_.cloneDeep(arr1); // Lo-dash
Там, где $ .extend jQuery имеет лучшую производительность:
Вы не можете автоматически регенерировать (пользовательский) токен без участия пользователя. 60 дней - это максимальный срок жизни токена пользователя. Если бы можно было автоматически сгенерировать токен пользователя, даже не имело бы смысла устанавливать ограниченный срок службы.