hi im trying to override default Number wrapper toString function
(function() {
let _toString = Number.prototype.toString;
Number.prototype.toString = function() {
console.log("Number ToString Called");
_toString();
};
})();
let b = new Number(5);
console.log(b);
document.writeln(typeof b);
document.writeln(b.toString());
I used above code but it gives me error when I try to call original method after console.log()
Uncaught TypeError: Number.prototype.toString requires that 'this' be a Number at toString () at Number.toString
I'm looking for ways to do this in javascript thanks in advance
toString
is a method, it receives the object to convert as its this
context. You need to pass that along to the original function.
Number.prototype.toString()
can take an optional radix
argument. You should pass that along as well.
You can call a function with a specific this
context and arguments by using Function.prototype.apply
.
You also need to return the value returned by the original function.
(function() {
let _toString = Number.prototype.toString;
Number.prototype.toString = function(...args) {
console.log("Number ToString Called");
return _toString.apply(this, args);
};
})();
let b = new Number(20);
console.log(b);
document.writeln(typeof b);
document.writeln(b.toString());
document.writeln(b.toString(8));
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments