私はちょうど何かをしようと、この発見された:カスタムtoString
内String(n)
を呼び出した場合、それは自分自身を呼び出し、エラーMaximum Call Stack exceeded
をスローし、String(number)はnumber.toStringを内部的に呼び出しますか?
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();
注:私は、スニペットの上知っも同じエラーを投げているが、私はNode
、chrome - JSFiddle
とFirefox - JSFiddle
にチェックして、それが一貫しています。 var b = String(a)
はnumber.toString()
を呼び出さないので、'' + this
も呼び出します。これはnumber.toString()
を''+this
に呼び出すStack snippetの最適化です。
私の質問は何ですか?なぜこの奇妙な行動ですか?
@Downvotersで、私はあなたの視点を尊重し、しかし、あなたが考える場合は、何かがポストと間違っている、あなたのコメントを共有してください。それを投票するだけで誰も助けにならないでしょう。 – Rajesh