Контекстуальные querySelectors не эквивалентны?

Тестируя некий код споткнулся на ошибке Illegal invocation. Собственно говоря чтобы выбрать какой-то элемент на странице мы можем воспользоваться DOM API.

Пишем:

document.querySelector("body")

Вроде все ок в консоли ок - выдает нам то что мы просим.

Однако такой код не работает:

let context = document.querySelector("body");
document.querySelector.call(context, "p");

Вызывает ту самую ошибку.

И да:

let context = document.querySelector("body");
document.querySelector == context.querySelector; /// false

Может кто-нибудь пояснить почему querySelectors не равны?


Ответы (1 шт):

Автор решения: Igor

Потому что методы querySelector определены отдельно для HTMLDocument и для HTMLElement после того, как их ветви наследования разошлись на Node.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement

→ Ссылка