Javascript 这个原型是做什么的?

Javascript 这个原型是做什么的?,javascript,Javascript,它是在制作一个新版本的Number函数,并将其称为其他函数吗?有没有更好的方法写这个 Number.prototype.clamp = function(min, max) { return Math.min(Math.max(this, min), max); }; 和你的一样吗 Number.prototype.NumberToMystring = function(n) { return n.toSTring(); }; 然后NumberToMystring(5)将返回“5”,

它是在制作一个新版本的Number函数,并将其称为其他函数吗?有没有更好的方法写这个

Number.prototype.clamp = function(min, max) {
  return Math.min(Math.max(this, min), max);
};
和你的一样吗

Number.prototype.NumberToMystring = function(n) {
  return n.toSTring();
};

然后NumberToMystring(5)将返回“5”,但作为一个字符串,NumberToMystring与climp不同

夹具有不同的目标,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

要理解为什么会发生这种情况,您必须理解所有的概念,从执行上下文、范围开始,然后访问原型

尝试像这样更改clamp函数,看看它返回什么。这将帮助您理解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”的原因

为了理解原型,范围链和执行上下文可以看看这个站点。
JavaScript中的所有对象都是对象的后代;所有对象都继承方法
和Object.prototype Object.prototype中的属性,尽管它们可能被重写 (原型为空的对象除外,即Object.create(null))。例如,其他
构造函数的原型覆盖构造函数属性并提供自己的toString
方法。对对象原型对象的更改将传播到所有对象,除非 受这些更改影响的属性和方法将沿着原型链进一步重写


你能把你的另一个答案加到plesae上吗?我怎么叫clamp?我试过var x=Number.clamp(10);但我有一个error@Hello-世界:你必须传递两个参数来钳制。变量x=(5).钳位(0255);返回5不完全:
clamp()
是所有数字对象的方法。例如,你可以这样称呼它:
(100)。clamp(5,10)
@helloworld:好了,现在我明白你的问题了。我将在一分钟内更新答案。
NumberToMystring()
函数没有任何意义。它是所有Number对象的一个方法,但它会忽略调用它的Number。例如,您可以使用
(10).NumberToMystring(20)
调用它,而该函数在调用它时根本不会使用
10
执行任何操作。这就像你调用了
(20).toString()
。听起来你可能在猜测这个
。原型是什么。
业务的全部,是吗?在这种情况下,最好是仔细阅读它们:OP不使用
Object.prototype