NumberToMystringはクランプと同じではありません。
クランプの目的は異なり、NumberToMystringも同様です。クランプは、数値が範囲内にあることを保証しますが、後者は変換演算子です。
クランプの使い方は
var x = (5).clamp(0, 255); return 5
Number.prototype.clamp = function(min, max) {
return Math.min(Math.max(this, min), max);
};
このプロトタイプを見たら。このオブジェクトはreturnステートメントに含まれます。これは、あなたがクランプと呼んだ番号に他なりません。私たちの場合は5です。
このように発生する理由を理解するには、実行コンテキスト、スコープから始まり、プロトタイプにアクセスするまでの多くの概念を理解する必要があります。
このようにクランプ機能を変更して、何が返されるかを確認してください。これは、JSフィドルコードが機能しない理由を理解するのに役立ちます。
Number.prototype.newclamp = function(min, max) {
return this;
};
これにより、Numberオブジェクトが返されます。この呼び出し中にスコープチェーンを分析すると、スコープに5が含まれているため、操作が実行されると5が返されます。
var y = 5;
var z;
z = y.newclamp();
z.toString() // return 5;
Number.prototype.NumberToMystring = function(n) {
return n.toSTring();
};
この特定のプロトタイプでは、プロトタイプを呼び出すときに渡される引数のみを使用しています。そのため、NumberToMystring(5)は、引数として5をとって「5」を返します。
プロトタイプを理解するために、スコープチェーンと実行コンテキストはこのサイトを参照してください。
http://dmitrysoshnikov.com/ecmascript/chapter-3-this/