난 그냥 뭔가를 시도하고 발견 된이 :String (number)가 number.toString을 내부적으로 호출합니까?
사용자 정의 toString
내부 String(n)
를 호출 할 경우,이 오류 Maximum Call Stack exceeded
자신을 호출하고 발생,
Number.prototype.toString = function() {
return String(this)
}
var a = 10;
try {
a.toString()
} catch (err) {
console.log(err.message)
}
하지만, 직접 var b = String(a)
으로 전화하면 01을 호출하지 않습니다.기능.
주
Number.prototype.toString = function(){
console.log(this);
return '' + this;
}
var a = 10;
a.toString();
JSFiddle : 나는 조각도 동일한 오류를 던지고있다 위 알지만, Node
, chrome - JSFiddle
및 Firefox - JSFiddle
에 확인하고는 일치한다. var b = String(a)
은 number.toString()
을 호출하지 않으므로 '' + this
도 호출합니다. 이것은 number.toString()
을 ''+this
에 호출하는 Stack snippet의 일부 최적화입니다.
제 질문은 무엇입니까? 왜이 이상한 행동입니까?
@Downvoters이다, 나는 당신의 관점을 존중하지만 당신이 생각하는 경우에, 뭔가 게시물에 문제가있다, 당신의 의견을 공유하시기 바랍니다. 투표 만하면 누구에게도 도움이되지 않습니다. – Rajesh