2014-11-25 42 views
0

如何擴展一個對象與更多的鍵從另一個腳本來?Javascript擴展對象與其他腳本中的新鍵

所以我有這個需要主腳本,在這裏我創建一個通用對象,我將在整個項目中使用。

現在另一個腳本我已經是創造基本的項目信息,我想有這個主要對象以及

所以我需要main.js看起來是這樣的:

//my main object 
var mainObj = mainObj || {}; 

require.config({ 
    paths: { 
     leaflet: './leaflet-0.7.3', 
     bootstrap: './vendors/bootstrap.min', 
     projectInfo: './project-info' 
    }, 
    shim: { 
     'bootstrap': { 
      deps: ['projectInfo'], 
      export: 'bootstrap' 
     }, 
    } 
}); 

define(['projectInfo'], function(projectInfo) { 

    'use strict'; 

    mainObj = { 

     //HERE I NEED THE PROJECTINFO OBJECTS 
     projection: projectInfo.projection, 
     version: projectInfo.projection 

    }; 

} );

這裏是與projectInfo腳本:

(function (root, factory) { 
    if (typeof define === 'function' && define.amd) { 
     define([], factory); 
    } else if (typeof exports === 'object') { 
     module.exports = factory(); 
    } else { 
     factory(root); 
    } 
}(this, function() { 

    return { 

     projection: { 
      type: 'EPSG:4326', 
      proj4: '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', 
      resolutions: [1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5],  
      tilesMap: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 
      tilesSat: 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}' 

     }, 
     version: '0.0.1' 

    }; 

})); 

這工作,howeverdon't希望有「複製」手工的信息,我寧願只用該信息一氣呵成擴展這個mainObj /一條線。

有沒有辦法做到這一點,而不必編寫另一個腳本來做到這一點?

在此先感謝!

回答

2

你可以用下劃線的extend功能做到這一點:

_.extend(mainObj, projectInfo); 

jQuery有一個extend功能,太:

$.extend(mainObj, projectInfo); 

而且,隨着菲利克斯低於所指出的,這一功能計劃在ES6與Object.assign

Object.assign(mainObj, projectInfo); 
+0

謝謝!但如果你是不使用下劃線? – BonifatiusK 2014-11-25 14:54:25

+2

@BonifatiusK:['Object.assign'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)。 – 2014-11-25 14:56:48

+1

@BonifatiusK:你也可以使用jQuery的[extend](http://api.jquery.com/jquery.extend/)函數。 – soulprovidr 2014-11-25 14:58:53