Odpowiedź jest w dokumentacji, którą powiązany:
Wartość można uzyskać także poprzez to słowo kluczowe, ale Javascript będzie zawsze zawijał tę wartość jako obiekt, nawet jeśli jest to prosty ciąg lub wartość liczbowa.
Wszystkie wartości są osadzone w obiektach, gdy są dostępne jako this
.
Prawdziwy powód można znaleźć w tej linii jQuery source:
callback.call(obj[ i ], i, obj[ i++ ]) === false) {
można porównać go do
(function(){console.log(this)}).call(1);
który buduje Number
, ponieważ nie można wywołać funkcję na coś to nie jest przedmiot.
Od MDN on the call function:
thisArg:
Należy pamiętać, że to nie może być rzeczywista wartość postrzegana przez metodę: jeśli metoda jest funkcją w niewyspecjalizowanych surowego kodeksu trybu, null undefined zostanie zastąpiony przez obiekt globalny, a wartością pierwotną będzie w pudełku.
jedyne zalety chciałbym zobaczyć w użyciu this
zamiast valueOfElement
są:
- prostota: nie trzeba mieć na uwadze kolejność argumentów podanych do zwrotnego
- umiejętność użyć funkcji bezpośrednio na
this
nawet jeśli valueOfElement
jest prymitywnego typu
Dobra, czy korzystałaby z nich jedna na drugiej? valueOfElement w porównaniu z tym, to jest. – Johan
Świetne wyjaśnienie! –
Co robisz ?! Przestań to ulepszać! Już dobrze: D – VisioN