Измените метод parseInt: Javascript

Я не хочу использовать каждый раз parseInt('08', 10) для преобразования каждой строки в целое число,

Можем ли мы изменить метод parseInt, чтобы я мог использовать только parseInt('08') вместо parseInt('08', 10).?


person Niks Jain    schedule 12.10.2012    source источник


Ответы (3)


Вместо изменения встроенной функции parseInt вы можете определить свою собственную функцию следующим образом:

function prseInt(n)
{
    return parseInt(n, 10);
}

И замените все вхождения parseInt(n, 10), которые вы использовали в своем приложении, на prseInt(n).

Хорошо, если вы все еще хотите переопределить, вы можете сделать это:

var origParseInt = parseInt;
parseInt = function(n) {
     return origParseInt(n, 10);
}

И это работает!

Сценарий: http://jsfiddle.net/QKKwv/

person Praveen Kumar Purushothaman    schedule 12.10.2012
comment
Это простой способ, но я не хочу вводить какой-либо новый метод для этого, можно ли изменить встроенную функцию, чтобы это произошло? - person Niks Jain; 12.10.2012
comment
Это здорово, пока другой разработчик не придет и не решит, что нашел опечатку и исправит все ваши prseInt на parseInt. - person Jamiec; 12.10.2012
comment
Вы не можете изменить встроенную функцию. Но да, возможно, обновлю в ответ. - person Praveen Kumar Purushothaman; 12.10.2012
comment
@PraveenKumar - Получите что? - person Jamiec; 12.10.2012
comment
Lol, руководства по используемым функциям, зачем использовались и т. Д.? Обновил ответ. Пожалуйста, проверьте. - person Praveen Kumar Purushothaman; 12.10.2012
comment
@PraveenKumar - хахахаха, я вижу, ты еще не в восторге от этой индустрии. Это займет время. В идеальном мире каждый новый разработчик понимает все о проекте, который ему поручили. В реальном мире это комок грязи, который создавался многими руками в течение многих лет. Ничего хорошего не задокументировано, нет конкретных руководящих принципов. - person Jamiec; 12.10.2012
comment
@Jamiec, я согласен. В реальном мире это комок грязи, который создавался многими руками в течение многих лет. - person Jashwant; 12.10.2012
comment
@Jamiec Согласен с вами. А также обновил ответ демо! :) - person Praveen Kumar Purushothaman; 12.10.2012
comment
@PraveenKumar: Большое спасибо .. :) - person Niks Jain; 12.10.2012
comment
Добро пожаловать. Рад, если поможет! :) - person Praveen Kumar Purushothaman; 12.10.2012
comment
@ Ребята, никто не чувствует, Разве мой вопрос не поможет другим парням? :) :) - person Niks Jain; 12.10.2012
comment
@Niks Это действительно помогает. Мы все еще ищем. :) - person Praveen Kumar Purushothaman; 12.10.2012

Используйте просто оператор + перед вашей строкой, чтобы выполнить приведение типа (и не нужно вызывать parseInt())

var str = "08";
var num = +str;

console.log(num, typeof num);  // 8, number
person Fabrizio Calderan    schedule 12.10.2012

parseInt(xx) (то есть без параметра radix) будет работать отлично в 99% случаев, он будет пытаться угадать, какая база вам нужна.

Для одного числа, такого как 8, он правильно угадает basse10 и даст вам целое число 8. Проблема заключается в строке типа 08, он угадает, что вы хотите, восьмеричное, и преобразует " 08 "в восьмеричном формате возвращает ноль.

Вы должны ВСЕГДА указывать параметр radix при использовании parseInt.

person Jamiec    schedule 12.10.2012
comment
Да ... вы абсолютно правы, но нельзя ли изменить встроенный метод, чтобы мы могли каждый раз использовать parseInt (значение) вместо parseInt (значение, основание)? - person Niks Jain; 12.10.2012
comment
Вы можете использовать parseInt(value), как я объяснил, если вы понимаете его поведение. Если value когда-либо будет иметь префикс 0, он преобразует его в восьмеричный. И нет, вы не можете изменить встроенный метод, иначе он не был бы встроенным. - person Jamiec; 12.10.2012