求问,怎么合并拷贝对象值为函数名的情况?

    var setting={
        data: {
            keep: {
                parent: true,
                leaf: true 
            }
        },
        check: {
            enable: true 
        },
        callback: {
            onCheck: zTreeOnCheck,   //函数名
            beforeClick: zTreeBeforeClick, //函数名
            onRemove: zTreeOnRemove //函数名
        },
        view: {
            showIcon: false, 
            showLine: false, 
            addDiyDom: addDiyDom //函数名
        }
    };

现在我要把 setting 这个对象跟另外一个对象(暂时就是一个空对象吧,{})合并,求问可以解决吗?
使用一般的克隆函数,$.extend都会被过滤掉 函数名,如下:

clipboard.png

阅读 1.7k
2 个回答

Object.assign()

注意:Object.assign()拷贝的是属性值。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。

不知道你是怎么写的,使用$.extend不会过滤掉函数啊,使用$.extend深拷贝试试:

clipboard.png

let zTreeOnCheck = function() {}
let zTreeBeforeClick = function() {}
let zTreeOnRemove = function() {}
let addDiyDom = function() {}

var setting={
  data: {
    keep: {
    parent: true,
      leaf: true 
    }
  },
  check: {
    enable: true 
  },
  callback: {
    onCheck: zTreeOnCheck,   //函数名
    beforeClick: zTreeBeforeClick, //函数名
    onRemove: zTreeOnRemove //函数名
  },
  view: {
    showIcon: false, 
    showLine: false, 
    addDiyDom: addDiyDom //函数名
  }
};
let setting1 = {
  callback: {
    onCheck: function onCheck(){console.log('on check')},
    hello: function hello(){console.log('hello')}
  }
}
let hello = $.extend(true, {}, setting, setting1) // 深拷贝
console.log(hello)

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题