Почему методы документа нельзя хранить в функции? - PullRequest
0 голосов
/ 31 декабря 2018

В JavaScript вы можете установить переменные для хранения определенных функций и использовать их, например, так:

var log = console.log;
log('foo'); 

Но по какой-то странной причине вы не можете сделать это на большинстве, если не на всех методах документа,такие как querySelector:

var select = document.querySelector;

// causes the error: Uncaught TypeError: Illegal invocation
select('p'); 
<p>...</p>

Почему это так, и есть ли обходной путь для этого?

1 Ответ

0 голосов
/ 31 декабря 2018

Контекст, кажется, теряется.Это не связано с document.Используйте это так:

var select = document.querySelector.bind(document);
// Works!
console.log(select('p'));
<p>...</p>

Вы можете увидеть, с чем связана функция, в JavaScript: С какой функцией javascript объекта связана (каково ее «this»)?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...