как переопределить функцию JavaScript

Я пытаюсь переопределить встроенную функцию parseFloat в js. Как бы я поступил так?

77 голосов | спросил Riz 23 MarpmWed, 23 Mar 2011 20:45:21 +03002011-03-23T20:45:21+03:0008 2011, 20:45:21

4 ответа


0
var origParseFloat = parseFloat;
parseFloat = function(str) {
     alert("And I'm in your floats!");
     return origParseFloat(str);
}
ответил David Waters 23 MarpmWed, 23 Mar 2011 20:50:05 +03002011-03-23T20:50:05+03:0008 2011, 20:50:05
0

Вы можете переопределить любую встроенную функцию, просто повторно объявив ее.

parseFloat = function(a){
  alert(a)
};

Теперь parseFloat(3) оповестит 3.

ответил Rocket Hazmat 23 MarpmWed, 23 Mar 2011 20:50:24 +03002011-03-23T20:50:24+03:0008 2011, 20:50:24
0

Вы можете сделать это так:

alert(parseFloat("1.1531531414")); // alerts the float
parseFloat = function(input) { return 1; };
alert(parseFloat("1.1531531414")); // alerts '1'

Посмотрите рабочий пример здесь: http://jsfiddle.net/LtjzW/1/

ответил Kyle Wild 23 MarpmWed, 23 Mar 2011 20:49:22 +03002011-03-23T20:49:22+03:0008 2011, 20:49:22
0

Вы можете переопределить его или, желательно, расширить его реализацию, как это

parseFloat = (function(_super) {
    return function() {
        // Extend it to log the value for example that is passed
        console.log(arguments[0]);
        // Or override it by always subtracting 1 for example
        arguments[0] = arguments[0] - 1;
        return _super.apply(this, arguments);
    };         

})(parseFloat);

И называйте это так, как вы обычно это называете:

var result = parseFloat(1.345); // It should log the value 1.345 but get the value 0.345
ответил Anastasios Selmanis 16 PMpMon, 16 Apr 2018 19:23:30 +030023Monday 2018, 19:23:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132