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