Я хочу, чтобы достичь чего-то похожее на это:контекст функции в JavaScript
Функция someFunction
имеет метод .lockThis(<object>)
и когда первая называется:
var foreverThis = {};
someFunction.lockThis(foreverThis);
// ... or
// someFunction = someFunction.lockThis(foreverThis);
Он будет связывать эту функцию в <object>
, так что следующее (или любое другое) время, когда эта функция выполняется с помощью функции as-function или as-method, или с помощью apply/call - изначально это дало <object>
.
Я могу, конечно, определить Function.prototype.lockThis
который будет вызывать функцию с помощью .apply()/call()
и указать данный объект в качестве контекста, но он по-прежнему можно будет заменить контекст someFunction
, если кто-то называет его через apply()
, а также.
Есть ли способ, чтобы заблокировать контекст функции в JavaScript таким образом, что он будет всегда предоставили объект как this
без изменения кода самой функции?
Так что вы на самом деле пытаются сделать это так, что если вы 'someFunction.lockThis (что-то)', каждый раз, когда вы называете 'someFunction' независимо от того, где в код, он будет притворяться, что это делает что-то .someFunction'? –
@SamuelReid, да, что-то вроде этого – mishik
В вашем удаленном вопросе: '$ (". Class3 ")' выбирает все элементы, которые имеют класс 'class3'; '$ (" div.class3 ")' выбирает все элементы, которые имеют класс 'class3' ** и ** являются элементами' div'. И все это позволяет себе, что современные браузеры поддерживают индекс отношения классов к элементам, и простой селектор классов может быть запрошен с помощью 'getElementsByClassName', в то время как другой требует' querySelectorAll' или 'getElementsByClassName' + фильтрации по' tagName'. [Ссылка] (http://api.jquery.com/class-selector/) –