Sober_exe
@Sober_exe
фронтенд-разработчик

Что за особенный объект, к которому можно применить метод clone()?

Существует библиотеку uri.js - многие используют для удобной работы с урлом.
Если вывести в консоль "new URI()", то увидим это:
d {_string: "", _parts: Object, _deferred_build: true}

если сделаем так:
var uri = new URI(),
    clone = uri.clone()

То объект клонируется, хотя метод clone предназначен для клонирования дом-элементов, но это сработает.
И объект скопируется не по ссылке, как это делают все объекты.

А если мы попробуем проделать тоже самое с обычным объектом:
var obj = {
        a: {},
        b: {}
    },
    clone = obj.clone()

Будет ошибка "clone not a function", что логично

И uri и obj это объёкты, что подтвердит typeof

Так вот вопрос - что это за объект "d" и почему к нему можно применить метод clone?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
p.clone = function() {
    return new URI(this);
};

https://github.com/medialize/URI.js/blob/85279a0ed...

То объект клонируется, хотя метод clone предназначен для клонирования дом-элементов, но это сработает.

При чём здесь .clone() вообще? На jQuery свет клином не сошёлся, и за её пределами есть разумная жизнь, которая вполне себе может называть методы так же, как в jQuery, не имея с ней ничего общего при этом. У нас в офисе тоже есть Константин, но я же понимаю, что вопрос писал, скорее всего, не он.

P.S.
И uri и obj это объекты, что подтвердит typeof
В javascript всё объекты.
typeof null // "object"
typeof [] // "object"
Ответ написан
FFxSquall
@FFxSquall
Могу писать код, могу не писать
Это метод этой библиотеки. Исходники
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы