Function.prototype.bind 和 foo.bind 指的是同一个代码?
绝对地!您可能遇到过这样的短语,例如JavaScript 是一种函数式语言,或者在 JS 中,函数是第一类对象。这意味着属性和方法的逻辑适用于函数,就像它们对任何对象(数组、日期、对象...)所做的一样
。主要Function
包含定义所有函数具有的所有基本属性和方法的原型。与其将新的函数对象分配给每个函数,不如将它们分配给所有函数对象都指向的 1 个对象更有效。
这意味着,就像其他人在这里指出的那样:
function foo()
{};
foo.bind === Function.prototype.bind;
但这也意味着您可以同时扩充原型和单个函数对象:
Function.prototype.getName = function()
{
return this.name;
}
foo.getName();//foo
同样,在这里foo.getName === Function.prototype.getName
,但是一旦我们直接分配给单个函数对象:
foo.getName = function(){ return 'bar';};
理所当然地foo.getName !== Function.prototype.getName
......只是玩弄函数原型,以及它如何单独影响每个函数的行为。挺好玩的;P