鍍金池/ 問答/HTML/ 求問,怎么合并拷貝對象值為函數(shù)名的情況?

求問,怎么合并拷貝對象值為函數(shù)名的情況?

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

現(xiàn)在我要把 setting 這個對象跟另外一個對象(暫時就是一個空對象吧,{})合并,求問可以解決嗎?
使用一般的克隆函數(shù),$.extend都會被過濾掉 函數(shù)名,如下:

clipboard.png

回答
編輯回答
離夢

Object.assign()

注意:Object.assign()拷貝的是屬性值。假如源對象的屬性值是一個指向?qū)ο蟮囊?,它也只拷貝那個引用值。

2017年11月19日 20:46
編輯回答
任她鬧

不知道你是怎么寫的,使用$.extend不會過濾掉函數(shù)啊,使用$.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,   //函數(shù)名
    beforeClick: zTreeBeforeClick, //函數(shù)名
    onRemove: zTreeOnRemove //函數(shù)名
  },
  view: {
    showIcon: false, 
    showLine: false, 
    addDiyDom: addDiyDom //函數(shù)名
  }
};
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

2017年6月4日 09:38