gpt4 book ai didi

javascript - 为什么 lodash deepClone 不对 Function 属性进行深度克隆?

转载 作者:行者123 更新时间:2023-12-01 00:39:15 25 4
gpt4 key购买 nike

当对象具有数组/对象或原始属性时,可以使用 lodash deepClone。

const _ = require('lodash');

const countries = [
{
name: 'United States of America',
capital: 'Washington D.C.',
languages: [ 'English' ]
},
{
name: 'China',
capital: 'Beijing',
languages: [ 'Mandarin', 'Cantonese' ]
},
];

const countriesClone = _.cloneDeep(countries);

console.log(countries[0] === countriesClone[0]); // returns false

但它似乎不适用于函数属性:

const _ = require('lodash');

const sayHi = () => { console.log('hi')};
const sayBye = () => { console.log('bye')};

const myFunctions = {
sayHi,
sayBye
};

const myFunctionsClone = _.cloneDeep(myFunctions);

console.log(myFunctions.sayHi === myFunctionsClone.sayHi); // returns true

这是意图吗?如果是的话,为什么?我假设数组、对象和函数都会被同等对待,因为它们都是引用类型。

最佳答案

在 JavaScript 中没有可靠的方法来克隆函数,因此 Lodash 不这样做。

documentation for _.clone列出了几种不可克隆的值类型(并暗示还有其他类型):

An empty object is returned for uncloneable values such as error objects, functions, DOM nodes, and WeakMaps.

关于javascript - 为什么 lodash deepClone 不对 Function 属性进行深度克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com