将 angular 添加到 window 对象的代码行在哪里?

Where is the line of code that adds angular to the window object?

我知道 angular 被添加到 window,但是 looking through the library,我找不到位置!

Angular 包含在一个 IIFE 中,那么它实际上在代码中的什么位置被添加到 window?

主要是这几行代码将window赋值给$window。此代码取自 angular 库:

$provide.provider({
        $window: $WindowProvider,
      });  

function valueFn(value) {return function() {return value;};}

function $WindowProvider() {
  this.$get = valueFn(window);
}

正在方法调用setupModuleLoader下面通过调用ensure方法进行初始化:

function ensure(obj, name, factory) {
    return obj[name] || (obj[name] = factory());
}

var angular = ensure(window, 'angular', Object);

此代码首先检查 window 对象中是否存在名称为 angular 的对象,如果没有,则创建 Object 的新实例并将其分配给 angular变量。

更新:

在Javascript中如果我们想创建一个新实例,我们可以通过三种不同的方式创建任何函数的新实例:

function A() {
      // some code
}

var a1 = new A();
var a2 = new A;
var a3 = A();

因此,我们正在传递 Object class 并接受 factory 变量,通过调用 factory() 我们正在创建新的对象实例,该实例将分配给 angular变量。