Присвоить данные узла другой переменной jstree

Я пытаюсь назначить данные узла временной переменной в переменной контекстного меню, как

addToTable:{
                        // The "aggregate" menu item
                        label: "Show in table",
                        "seperator_before": false,
                        "seperator_after": true,
                        action: function(obj) {
                            tempNode = new Object();
                            tempNode.id =  node.id;
                            tempNode.original =  node.original;
                            //tempNode = jQuery_1_11('#ajax').jstree(true).get_node(node);
                            node.original.metadata.repeatme = true;
                            jQuery_1_11("#ajax").trigger("changed.jstree", {});
                             // or   jQuery_1_11("#ajax").trigger("changed.jstree", node);
                             // or   jQuery_1_11("#ajax").trigger("changed.jstree", tempNode );
                        }
                    },

после триггера, если я использую следующим образом

tempNode.original.metadata.sort_no = 2;

это также изменяет атрибут "sort_no" исходного узла.

Я не хочу, чтобы исходные данные узла были изменены.

Заранее спасибо.

1 ответ

Это потому, что в Javascript вы можете передавать по значению или ссылке. Итак, с tempNode.original = node.original вы назначаете ссылку на node.original а не создание нового объекта. Существует целая другая дискуссия о том, как это сделать, но в зависимости от среды, в которой вы работаете (Node, браузеры и т. Д.), Существуют библиотеки, которые могут помочь с этим.

Другие вопросы по тегам