2015-04-22 62 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); 
} 
相關問題