Я работал над своей собственной библиотекой javascript, kis-js.Я недавно преобразовал его для работы с селекторами dom, такими как jQuery, но из-за копирования только ссылок javascript у меня возникает эта проблема:
Если вы дважды вызываете $_
, то при повторном вызове он изменяет результат первогоcall.
Тестовый код:
<h1>Heading</h1>
<a>Anchor</a>
<script>
var anchor = $_("a");
var heading = $_("h1");
console.log(anchor.el); // should be <a>, but it's <h1>
</script>
Вот источник библиотеки: https://github.com/timw4mail/kis-js/blob/master/kis.js
Я подумал, что мне нужно создать глубокую копию конструктораобъект, но я не совсем уверен, как это сделать.
Редактировать:
Я создал функцию глубокого копирования:
dcopy = function(obj)
{
var type, f;
if(obj == null)
{
return;
}
if(typeof Object.create !== "undefined")
{
return Object.create(obj);
}
var type = typeof obj;
if(type !== "object" && type !== "function")
{
return;
}
var f = function(){};
f.prototype = obj;
return new f();
};
Как я могу использовать эточтобы я мог расширить свой построенный объект?