ÐлгоÑиÑм ÑÑÑÑкÑÑÑиÑованного клониÑÐ¾Ð²Ð°Ð½Ð¸Ñ â ÑÑо новÑй алгоÑиÑм, опÑеделÑннÑй ÑпеÑиÑикаÑией HTML5 Ð´Ð»Ñ ÑеÑиализаÑии комплекÑнÑÑ JavaScript обÑекÑов. Ðн более ÑÑнкÑионален, Ñем JSON в Ñом ÑÑо ÑпоÑобен поддеÑживаÑÑ ÑеÑиализаÑÐ¸Ñ Ð¾Ð±ÑекÑов ÑодеÑжаÑÐ¸Ñ ÑиклиÑеÑкие гÑаÑÑ â пеÑвиÑнÑе обÑекÑÑ, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° дÑÑгие обÑекÑÑ Ñ ÐºÐ¾ÑоÑÑÑ ÐµÑÑÑ ÑÑÑлка на пеÑвиÑнÑе обÑекÑÑ Ð² Ñом же гÑаÑе. Рдополнение, в некоÑоÑÑÑ Ð´ÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ Ð°Ð»Ð³Ð¾ÑиÑм ÑÑÑÑкÑÑÑиÑованного клониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивен, Ñем JSON.
ÐлгоÑиÑм, по ÑÑÑеÑÑвÑ, пеÑебиÑÐ°ÐµÑ Ð²Ñе Ð¿Ð¾Ð»Ñ Ð¾ÑигиналÑного обÑекÑа, дÑблиÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ Ð² новÑй обÑекÑ. ÐÑли поле пÑедÑÑавлÑÐµÑ Ð¸Ð· ÑÐµÐ±Ñ Ð¾Ð±ÑÐµÐºÑ Ñ ÑобÑÑвеннÑми полÑми, Ñо ÑÑи доÑеÑние Ð¿Ð¾Ð»Ñ Ñакже пеÑебиÑаÑÑÑÑ ÑекÑÑÑивно, пока каждое поле и вÑе доÑеÑние Ð¿Ð¾Ð»Ñ Ð½Ðµ бÑдÑÑ Ð¿ÑодÑблиÑÐ¾Ð²Ð°Ð½Ñ Ð² новÑй обÑекÑ.
ÐÑеимÑÑеÑÑва пеÑед JSONÐÐ¾Ñ Ð¾ÑновнÑе пÑеимÑÑеÑÑва ÑÑÑÑкÑÑÑиÑованного клониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑед JSON:
RegExp
обÑекÑÑ.Blob
, File
, и FileList
обÑекÑÑ.ImageData
обÑекÑÑ. The dimensions of the clone's CanvasPixelArray
will match the original and have a duplicate of the same pixel data.Error
and Function
objects cannot be duplicated by the structured clone algorithm; attempting to do so will throw a DATA_CLONE_ERR
exception.DATA_CLONE_ERR
exception.lastIndex
field of RegExp
objects is not preserved.ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе ÑделаÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½ÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¾Ð±ÑекÑа (Ñ.е ÑекÑÑÑивно копиÑоваÑÑ Ð²Ñе вложеннÑе ÑвойÑÑва, пÑÐ¾Ñ Ð¾Ð´Ñ Ð¿Ð¾ пÑоÑоÑипной Ñепи), Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ Ð´ÑÑгой Ð¿Ð¾Ð´Ñ Ð¾Ð´. Ðиже пÑиведÑн возможнÑй пÑимеÑ.
function clone(objectToBeCloned) {
// Basis.
if (!(objectToBeCloned instanceof Object)) {
return objectToBeCloned;
}
var objectClone;
// Filter out special objects.
var Constructor = objectToBeCloned.constructor;
switch (Constructor) {
// Implement other special objects here.
case RegExp:
objectClone = new Constructor(objectToBeCloned);
break;
case Date:
objectClone = new Constructor(objectToBeCloned.getTime());
break;
default:
objectClone = new Constructor();
}
// Clone each property.
for (var prop in objectToBeCloned) {
objectClone[prop] = clone(objectToBeCloned[prop]);
}
return objectClone;
}
ÐÑимеÑание: ÐÑÐ¾Ñ Ð°Ð»Ð³Ð¾ÑиÑм Ñеализован ÑолÑко Ð´Ð»Ñ RegExp
, Array
, и Date
ÑпеÑиалÑнÑÑ
обÑекÑов. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑеализоваÑÑ Ð´ÑÑгие ÑÑловиÑ, ÑдовлеÑвоÑÑÑÑие ваÑим поÑÑебноÑÑÑм.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4