我想重写parseInt以首先删除逗号
在Chrome的tampermonkey中运行
即,而不是parseInt(s)
会的
s.replace(/,/g, '');
parseInt(s)
我当前的代码是
(function() {
// log all calls to setArray
var proxied = parseInt;
parseInt = function() {
arguments[0]=arguments[0].replace(/,/g, '');
return proxied.apply( this, arguments );
};
})();
我收到错误消息“参数[0]。替换不是函数”
答案 0 :(得分:0)
您应该确保您的参数是String:
(function() {
// log all calls to setArray
var proxied = parseInt;
parseInt = function() {
arguments[0]=arguments[0].toString().replace(/,/g, '');
return proxied.apply( this, arguments );
};
})();
编辑: 由于parseInt的第一个参数的定义,这种解决方案比强制转换更好。
要解析的值。如果字符串参数不是字符串,则为 转换为字符串(使用ToString抽象操作)。领导 字符串参数中的空格将被忽略。
EDIT2: 正如评论中所说:这不是一个好习惯。但是,如果仍然要执行此操作,则还应该允许第二个参数(基本)
答案 1 :(得分:0)
这是因为您传递了一个数字。 一种可能的解决方案是将参数[0]强制转换为字符串,然后像在其上调用replace方法一样
(function() {
// log all calls to setArray
var proxied = parseInt;
parseInt = function() {
arguments[0]=String(arguments[0]).replace(/,/g, '');
return proxied.apply( this, arguments );
};
})();