【问题标题】:Javascript: Why am I able to access Function.prototype.call without mentioning the prototype?Javascript:为什么我可以访问 Function.prototype.call 而无需提及原型?
【发布时间】:2016-06-24 02:12:50
【问题描述】:

这是一个解释我的问题的sn-p:

+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

【问题讨论】:

  • Pointy 在下面的回答是完全正确的。注意这仍然是访问call的迂回方式,所以请不要在实际代码中这样做=p
  • @Kyll 是的,这只是一个实验。我还不能接受答案! :)

标签: javascript prototypal-inheritance function-binding


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2016-09-06
    • 2016-08-06
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多