2017-09-26 149 views
0

我們將flyweight對象的實例存儲到flyweights對象中。然後,要引用flyweight,我們使用此語法flyweights[project + priority + user + completed]。這個+語法來自哪裏,是否意味着:這個屬性需要匹配+這個屬性需要匹配等?引用另一個對象內的多屬性對象

function Flyweight(project, priority, user, completed) { 
    this.priority = priority; 
    this.project = project; 
    this.user = user; 
    this.completed = completed; 
}; 

var FlyweightFactory = function() { 
    var flyweights = {}; 

    var get = function (project, priority, user, completed) { 
     if (!flyweights[project + priority + user + completed]) { 
      flyweights[project + priority + user + completed] = 
       new Flyweight(project, priority, user, completed); 
     } 
     return flyweights[project + priority + user + completed]; 
    }; 

    } 
    return{ 
     get: get 

    } 
}() 
+0

它連接一個字符串來查找你的對象。 'flyweights'是一個對象 - 「項目+優先級+用戶+已完成」構成關鍵 – tymeJV

回答

1

使用的對象+運營商將自動調用每一個其toString()方法和串聯這些字符串。這意味着project + priority + user + completed是一個字符串(除非所有變量都是數字,那麼+被解釋爲正常添加)。

使用foo['bar']您正在訪問對象foo內的屬性'bar'(對於更多讀數,請檢查:mdn docs link)。

因此,總的來說flyweights[project + priority + user + completed]會得到你在flyweights裏面存儲的關鍵字(字符串)project + priority + user + completed

相關問題