let target = arguments [ 0 ] || {} // 如果target不是对象,我们是无法进行复制的,所以设为{} if ( typeof target !== 'object' ) { target = {} // 循环遍历要复制的对象 for (; i < length; i++) { // 获取当前对象 options = arguments [i] // 要求不能为空 避免extend(a,,b)这种情况 if (options != null ) { for (name in options) { // 目标属性值 src = target[name] // 要复制的对象的属性值 copy = options[name] if (copy && typeof copy == 'object' ) { // 递归调用 target[name] = deepAssign ( src, copy) } else if (copy !== undefined ) { target[name] = copy return target

使用如下:

代码的实现参考了Jquery中extend的实现。

  • stackoverflow
  • github-$.extend的实现
  • JavaScript
    私信
    2,813