Я возился с JavaScript и заметил, что this
никогда не может быть примитивом. О чем я говорю? Позволь мне объяснить.
Возьмем, к примеру, эту функцию.
function test(){
return typeof this;
}
test.call('Abc'); // 'object'
test.call(123); // 'object'
Они оба являются 'объектом'
, а не 'строкой'
или 'числом'
, как я ожидал.
После некоторой путаницы (и возни с instanceof
) я понял, что происходит. 'Abc'
преобразуется в объект String
, а 123
преобразуется в объект Number
.
В любом случае, у меня вопрос: почему это происходит и как мне преобразовать объект обратно в его примитив?
Я знаю, что могу использовать (String) this
или (Number) это
, но как я могу это сделать, если я не знаю тип?
РЕДАКТИРОВАТЬ : Я пытался сделать это:
function element(){
var $e = $(this),
$d = $e.closest('div');
}
element.call('#myID');
, но это не сработало. this
является объектом String
, а jQuery просто создал коллекцию объектов вместо использования селектора для поиска в DOM.