Javascript:为什么我能在不提及原型的情况下访问Function.prototype.call?

时间:2016-03-09 15:39:56

标签: javascript prototypal-inheritance function-binding

以下是解释我的问题的摘要:

+function(str) {
  return str.replace(/^[a-z]|\s[a-z]/g,
            Function.call.bind(String.prototype.toUpperCase));
}('foo bar baz.');  //Returns Foo Bar Baz.

Function.call有效,但String.toUpperCase没有。我不得不写String.prototype.toUpperCase

1 个答案:

答案 0 :(得分:8)

Function()构造函数本身就是一个函数。因此,它继承了与任何其他函数相同的原型对象。

String()的实例继承自原型,但String()构造函数不是 String()的实例。它也是一种功能。