我有一个问题,我正在尝试使用一个数组,但是我不认为它会有效。我想要一个对象列表,每个对象都有一个唯一的ID,并且我想要能够轻松地引用特定的对象,而不必通过搜索ID来循环遍历数组。
如果我使用一个对象,我可以很容易地将唯一的ID作为键,对象作为值。然而,如果我使用一个对象而不是一个数组,我将不得不使用一个“for ... in”循环,我知道如果使用我的代码的人扩展了Object.prototype,就会出现问题。
所以这是我的问题:
人们真的经常扩展Object.prototype吗?我应该警惕使用它吗?还有其他原因我不想使用“for ... in”循环吗?
另一方面,循环遍历数组查找唯一的ID的性能损失是否非常小,我不用担心?
(记录一下,这个数组可能只有很少的元素,但我会非常频繁地访问它。另外,我正在编写的代码将是一个jQuery插件,所以我无法控制其他人与之组合使用的糟糕代码。)
更新:
根据@nnnnnn的建议,我设置了一个jsperf测试,以下是结果: http://jsperf.com/accessing-object-properties-vs-iterating-over-arrays 基本上,虽然对象方式稍微快一点,但差别微不足道。尽管如此,使用带有hasOwnProperty的for...in似乎更加清晰。
如果我使用一个对象,我可以很容易地将唯一的ID作为键,对象作为值。然而,如果我使用一个对象而不是一个数组,我将不得不使用一个“for ... in”循环,我知道如果使用我的代码的人扩展了Object.prototype,就会出现问题。
所以这是我的问题:
人们真的经常扩展Object.prototype吗?我应该警惕使用它吗?还有其他原因我不想使用“for ... in”循环吗?
另一方面,循环遍历数组查找唯一的ID的性能损失是否非常小,我不用担心?
(记录一下,这个数组可能只有很少的元素,但我会非常频繁地访问它。另外,我正在编写的代码将是一个jQuery插件,所以我无法控制其他人与之组合使用的糟糕代码。)
更新:
根据@nnnnnn的建议,我设置了一个jsperf测试,以下是结果: http://jsperf.com/accessing-object-properties-vs-iterating-over-arrays 基本上,虽然对象方式稍微快一点,但差别微不足道。尽管如此,使用带有hasOwnProperty的for...in似乎更加清晰。