Почему функция parseInt вместо метода?Почему не parseInt метод?
Функция:
var i = parseInt(X);
Метод:
var i = X.parseInt();
Почему функция parseInt вместо метода?Почему не parseInt метод?
Функция:
var i = parseInt(X);
Метод:
var i = X.parseInt();
Edit:
Я не 100% уверен, почему parseInt
не метод String
, за исключением того, что он может работать на чем угодно. Кажется, это может быть часть Math
, но это не совсем математическая операция.
End Edit
parseInt
является метод глобального объекта. В браузере глобальный объект равен window
. Вы можете вызвать window.parseInt()
, но механизм JS позволяет вам быстро выполнять вызовы глобальных методов.
Это говорит о том, что для этого существует определенная стоимость, так как двигатель должен сканировать цепочку областей поиска в поисках определений parseInt
. В общем, если я делаю один вызвать к такому способу, в пределах области, я буду ссылаться на его глобальный:
var foo = function (someString) {
var bar;
// ...
bar = window.parseInt(someString, 10);
// ...
};
Если мой код должен сделать больше, чем один вызов метода в пределах области, однако, я локализую его и использую ссылку:
var foo = function (someString, someOtherString) {
var parseInt = window.parseInt,
bar,
baz;
// ...
bar = parseInt(someString, 10);
baz = parseInt(someOtherString, 10);
// ...
};
. Думаю, он, вероятно, спрашивает, почему это не метод 'Number'. –
Да, возможно, он - хотя я думаю, что это ближе к «почему не' parseInt' метод 'String'?». – JAAulde
@amnotiam - вот что я тоже понял, но parseInt() не должен (и, вероятно, не должен (ну, по крайней мере, не обязательно запускать его по номерам)) запускаться на числах, но на всех _but_ numbers (Полагаю, именно поэтому это не метод «Номер»). – powerbuoy
Потому что это вызовет ошибку, если X не определено? – jishi
@jishi: Если 'X'' undefined', вы всегда будете получать сообщение об ошибке при попытке доступа к свойству. Не уверен, что это должно было бы сделать с 'parseInt', не являющимся методом' Number'. –
@amnotiam 'parseInt (undefined) === NaN', если' parseint' был методом 'String' или' Number', тогда 'undefined.parseInt()' выдавал исключение, а не возвращал 'NaN' – JaredMcAteer