【问题标题】:In Require.js, if require() is a function, how does require.config() exist?在Require.js中,如果require()是一个函数,那么require.config()是怎么存在的呢?
【发布时间】:2015-05-07 05:10:19
【问题描述】:

这个问题更多的是关于 javascript 对象的一般工作原理,而不是 Require.js 的具体工作原理。

假设我有一个名为 require 的函数:

var require = function(){/*cool stuff*/};

require 不是 javascript 对象。它没有名为“config”的键。因此require.config 的概念对我来说没有意义。

然而在 Require.js 中,require.config 实际上是一个有效的函数。

这怎么可能?

【问题讨论】:

  • 为什么你认为require不是一个JavaScript对象?
  • JavaScript 中的函数对象。
  • f = function() { return "hi!" }; f.g = f; alert(f.g()) - 完全合法。另一个常见的例子是 jQuery/$: 例如。 $(..)$.ajax.
  • require 不是 javascript 对象。它没有名为“config”的键。它绝对,而且它绝对确实

标签: javascript function object hash requirejs


【解决方案1】:

RequireJS 只是定义了一个名为 require 的函数,然后在其上定义了一个 config 属性,该属性具有一个函数的值。它所做的一个非常简短的表示是这样的:

require = function () {}
require.config = function () {}

这行得通,因为正如您问题的 cmets 中已经指出的那样,函数 JavaScript 中的对象。

【讨论】:

  • @mareoraft 从技术上讲,stringsnot 对象(它们是属于大值分类的原语),而 Strings 是对象。 JavaScript 在使用字符串->字符串(例如)方面做得很好,这使得方法“可调用”字符串/数字/布尔原始类型(实际上发生了内部提升/包装)。
  • 谢谢@user2864740。也许我应该说“字符串也是如此,还有很多其他的东西!”!
猜你喜欢
  • 2014-12-23
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2011-04-26
  • 2021-06-02
  • 2017-05-23
相关资源
最近更新 更多