underscore-contrib不能使用_.snapshot函数

时间:2015-05-30 08:00:25

标签: javascript underscore.js

我在我的项目中使用了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

最终我试图“破解它”,我复制将开发版本中的函数内容粘贴到我的脚本中的函数中并且工作正常,但它有点难看,我想避免重复并使用它正常。我错过了什么?

1 个答案:

答案 0 :(得分:2)

在您的示例中,您需要包含特定的underscore-contrib库 - 在您的情况下为object.builders

&#13;
&#13;
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;
&#13;
&#13;

就个人而言 - 我使用的lodash已经采用_.cloneDeep方法并且已经模块化且速度更快。