对象克隆及属性转换-JavaScript
2016-06-16 11:03
429 查看
在某些项目中,需要将一些返回信息进行其他语言的翻译,可以为不同语言用户提供不同的语言版本。下面是一个实现:
/** * @class Translate * @description 查询字典,翻译成相应的语言 * @author jerishi * @2016.6.15 */ var mapObj = { 'test01': '测试01', 'test02': '测试02', 'test03': '测试03', 'test04': '测试04' }; var targetObj = { '1': 'test01', '2': 'test02', '3': undefined, '4': { '4': 'test04', '3': 'test03', '2': 'test02' }, '5': { '1': 'test01', '2': 'test02', '3': 'test03', '4': { '4': 123, '3': 'test03', 'G': ['test03', 'test02', 3] } } }; var Translate = { /** * 克隆对象 * @param {object} obj * @return {object} */ clone: function(obj) { var _self = this; // 简单数据类型直接返回 if (obj == null) { return obj; } if (typeof obj != 'object') { return obj; } // 复制复杂对象 var result = new obj.constructor(); for (var prop in obj) { result[prop] = _self.clone(obj[prop]); } return result; }, /** * 从字典里寻找目标词汇翻译 * @param {object} mapTest 字典对象 * @param {string} target 目标词汇 * @return {string} 返回目标词汇查询结果 */ mapStr: function(mapObj, target) { // 默认值 var result = target; // 查询字典 $.each(mapObj, function(key, value) { if (key === target) { result = value; } }); return result; }, /** * 翻译对象属性值(深层遍历) * @param {object} dictionaryObj 字典对象 * @param {object} targetObj 目标对象 * @return {object} 翻译结果 */ mapObj: function(dictionaryObj, targetObj) { var _self = this; for (var prop in targetObj) { var target = targetObj[prop]; if (typeof target == 'string') { targetObj[prop] = _self.mapStr(dictionaryObj, target); } else { _self.mapObj(dictionaryObj, target); } } return targetObj; }, /** * 克隆目标对象,并翻译 * @param {object} dictionaryObj 字典对象 * @param {object} targetObj 目标对象 * @return {object} 翻译结果 */ translate: function(dictionaryObj, targetObj) { var _self = this; // 克隆目标对象,不影响原对象 var _targetObj = _self.clone(targetObj); // 翻译对象属性值 var result = _self.mapObj(dictionaryObj, _targetObj); return result; } } console.log(Translate.translate(mapObj, targetObj)); console.log(targetObj);
相关文章推荐
- js和ajax关于网页定位的问题
- 浅谈JS事件冒泡
- JS使用单链表统计英语单词出现次数
- C#处理JSON 数据
- Intersection of Two Linked List -JS
- [js]事件篇
- 《JavaScript DOM 编程艺术》读书笔记
- 「译」如何正确学习JavaScript
- JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
- 用json获取天气预报信息
- Bulls and Cows - JS
- JS模块化编程--AMD规范学习01
- WTL_Error---VS2012 新建WTL 脚本发生错误(wizard 1033/default.h,2052/scrips.js,2052/Common.js)
- WebStorm下载,破解,汉化,debug调试,以及会debug会出现的问题
- 浏览器端JS导出EXCEL
- javascript的replace方法结合正则使用实例总结
- JS定义类及对象
- js数组排序
- .NET之如何解析Json对象
- JavaScript放大镜插件magnifier实现图像放大效果