如何使用更多来自其他脚本的键来扩展对象?
所以我需要这个主脚本,在这里我创建一个通用对象,我将在整个项目中使用。
现在我的另一个脚本是创建基本的项目信息,我希望这个信息也包含在这个主要对象中
所以我的要求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'
};
}));
这样可行,但不想手动“复制”信息,我宁愿只用一行/一行扩展这个mainObj。
有没有办法在不编写其他脚本的情况下执行此操作?
提前致谢!
答案 0 :(得分:2)
您可以使用Underscore的extend功能执行此操作:
_.extend(mainObj, projectInfo);
jQuery也有extend功能:
$.extend(mainObj, projectInfo);
而且,正如费利克斯在下面指出的那样,这个功能计划用于ES6 Object.assign
:
Object.assign(mainObj, projectInfo);