No NumberToMystring 与clamp 不同。
Clamp 有不同的目标,NumberToMystring 也是如此。Clamp 确保数字在后者是转换运算符的范围内。
夹具的用途是
var x = (5).clamp(0, 255); return 5
Number.prototype.clamp = function(min, max) {
return Math.min(Math.max(this, min), max);
};
如果你看到这个原型。您将在 return 语句中有一个 this 对象。这只不过是您在我们的例子中调用夹子的数字,它是 5。
要了解为什么会这样,您必须了解很多概念,从执行上下文、范围开始,然后访问原型。
尝试像这样更改钳位函数,看看它返回什么。这将帮助您了解为什么您的 JS fiddle 代码不起作用。
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/