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
Могу писать код, могу не писать
Это метод этой библиотеки. Исходники
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы