当使用下划线函数初始化变量时,最好对数组和_(obj)使用.slice(0).克隆对象
When initializing a variable with an underscore function, is it best to use .slice(0) for arrays and _(obj).clone for objects?
标题可能有点令人困惑。
考虑以下下划线文档中的示例:
var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [1, 3, 5]
找到
注:我加了var oFound = ...
var oFound = _.findWhere(publicServicePulitzers, {newsroom: "The New York Times"});
在拒绝示例中使用.slice(0)和在查找位置示例中使用_(obj).clone()是否被认为是最佳实践?这将确保新初始化的变量不是对下划线函数输入的引用。例如:
var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }).slice(0);
var oFound = _(_.findWhere(publicServicePulitzers, {newsroom: "The New York Times"})).clone();
No。首先,函数不会在任何地方保留它返回给你的值的副本,其次,如果它保留了,它将由函数决定是否返回对它的直接引用或它的副本是合适的。添加slice
或clone
(除非你有特殊的理由)只会创建没有目的的对象。
请记住,reject
返回给您的数组是而不是您输入的数组;它是一个new数组,仅包含未被拒绝的条目。(如果碰巧这些条目中的任何一个是对象引用,那么当然两个数组都有对相同对象的引用。如果你也使用slice
,也会是这样。)
findWhere
的目的是在列表中查找对象,并向您返回对该对象的引用。假定您有访问该对象的理由(可能您想要更改它)。除非你有特别的理由,否则你不仅没有必要复制它,而且它可能会破坏你最初找到它的理由。
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- TypeError: 使用 Jquery JSON 获取数据时无效的 'in' 操作数 obj
- 创建自定义.OBJ/.MTL文件,并使用three.js进行渲染
- 对 OBJ 的发射效果在三个.js使用 OBJ 和 MTL 加载器
- 使用 geometry.vertices 和 geometry.faces 从 .obj 文件创建网格
- 三.js 使用按钮更改 .obj 文件的材料
- 如何使用触摸事件在画布内移动 obj
- 使用 Function.prototype.bind.apply(Obj, args) 将参数传递给对象,只传递第一个元
- 如何使用用户输入中的 three.js 在场景中加载两个或多个 .obj 对象
- three.js:无法使用 THREE 显示 obj 文件.OBJLoader.
- 使用三.js从本地机器加载 OBJ 模型
- 如何使用 mtl 文件和纹理加载 obj 文件
- 在 JavaScript 中使用多个参数的 OBJ-C 方法
- 使用三个.js加载字符串中的 .obj 存储
- 在“on”方法中使用obj/this
- 尝试在 Wordpress 中使用 jQuery 文件,这需要 noConflict,但现在我的 Object [obj
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- obj.hasOwnProperty(key)vs使用obj[key]直接引用
- Getting TypeError:无效'在'使用ajax获取数据时的操作数obj
- 当使用下划线函数初始化变量时,最好对数组和_(obj)使用.slice(0).克隆对象