2015-04-22 64 views

回答

1

它被通过调用ensure方法初始化的方法调用setupModuleLoader下面:

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

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

该代码被首先检查是否存在与名称angular可用对象在窗口对象中,如果没有,则创建一个Object的新实例并将其指定给angular变量。

更新

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

function A() { 
     // some code 
} 

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

所以,我们传递Object类并接受factory变量,并通过调用factory()我们正在创建一个新的对象实例,它将被分配到angular变量中。

+0

不错!谢谢。我看到这是在setupModuleLoader(窗口)内部,它又在publishExternalAPI内调用,它在文件的最后被调用。所以我猜想,角色正在做的是等待所有内容完全初始化,然后将其发布到窗口上的属性。还有什么有趣的我应该知道这一切? – richard

+0

还有一个问题......功能工厂()在哪里? – richard

+0

它看起来像在调用Object()。那里发生了什么? – richard

0

主要是这几行代码将窗口赋值给$ window。这个代码是从角库采取:

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

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

function $WindowProvider() { 
    this.$get = valueFn(window); 
} 
相关问题