我在我的项目中使用了underscore.js库(版本1.8.3),我需要深度克隆一个对象的一个脚本,因为_.clone(obj)函数只执行浅层克隆,我添加了我从源代码库中获取的underscore-contrib(版本0.3.0)库
<script type="text/javascript" src="underscore-min.js"></script>
<script type="text/javascript" src="underscore-contrib.min.js"></script>
并尝试使用_.snapshot(obj)函数,如此
var clonedData = _.clone(data); // works
var snapshotData = _.snapshot(data); // doesn't work
它没有用,控制台显示
TypeError: _.snapshot is not a function
最终我试图“破解它”,我复制将开发版本中的函数内容粘贴到我的脚本中的函数中并且工作正常,但它有点难看,我想避免重复并使用它正常。我错过了什么?
答案 0 :(得分:2)
在您的示例中,您需要包含特定的underscore-contrib库 - 在您的情况下为object.builders
:
var data = {x:3,y:{z:5}};
var snapshotData = _.snapshot(data); // doesn't work
data.y.z = 3;
document.body.innerHTML = JSON.stringify(snapshotData);
&#13;
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://rawgit.com/documentcloud/underscore-contrib/master/underscore.object.builders.js"></script>
&#13;
就个人而言 - 我使用的lodash已经采用_.cloneDeep
方法并且已经模块化且速度更快。