* @function LevelRenderer.Tool.Util.prototype.mergeItem * @description 合并源对象的单个属性到目标对象。 * * @param {Object} target - 目标对象。 * @param {Object} source - 源对象。 * @param {string} key - 键。 * @param {boolean} overwrite - 是否覆盖。 * @return {Object} 目标对象
(target, source, key, overwrite)
| 111 | * @return {Object} 目标对象 |
| 112 | */ |
| 113 | mergeItem(target, source, key, overwrite) { |
| 114 | var BUILTIN_OBJECT = this.BUILTIN_OBJECT; |
| 115 | if (source.hasOwnProperty(key)) { |
| 116 | if (typeof target[key] == 'object' |
| 117 | && !BUILTIN_OBJECT[Object.prototype.toString.call(target[key])] |
| 118 | ) { |
| 119 | // 如果需要递归覆盖,就递归调用merge |
| 120 | this.merge( |
| 121 | target[key], |
| 122 | source[key], |
| 123 | overwrite |
| 124 | ); |
| 125 | } else if (overwrite || !(key in target)) { |
| 126 | // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况 |
| 127 | target[key] = source[key]; |
| 128 | } |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | |
| 133 | /** |
no test coverage detected