javascript - Object([]); 是做什么的?做?

标签 javascript arrays

在 MDN 中一些数组原型(prototype)函数的 polyfill 示例中,有以下两行(例如:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find):

var list = Object(this);
var length = list.length >>> 0;

我假设第一个例子是自动装箱(?)。但是,如果 this 始终是一个数组,那么它的目的是什么?

第 2 行,这与以下内容有何不同:

var length = list.length || 0;

谢谢!

最佳答案

这使得在遵循规范的同时在非数组的对象上以严格模式调用函数(使用 callapply)成为可能。

如果它是 Array 的一个实例,或者一个类似数组的对象,它不会改变任何东西。

但在这里,确保 list 是一个对象的这一行会检查 this 既不是 null 也不是 undefined,并且由于其他值不会使以下访问失败(除了 Object(this) 无法解决的非常特殊的情况,例如失败的访问器),我不确定是否真的有观点。也许它是在检查之前设置的,或者它可能只是为了防止特殊的 native 对象而在这里。另一种可能性是它(也?)严格遵循 specification一步步想申请toObject .

list.length >>> 0 优于 || 0 事实上它四舍五入到最接近的较低的正整数(在 32 位范围内)。我不确定为什么这里没有使用 >>>,因为迭代到 4294967295 似乎并不比迭代到 -1 更好(即不要浪费时间)。

关于javascript - Object([]); 是做什么的?做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455529/

相关文章:

javascript - 如何使用多个相同的键但不同的值来解析这种类似 JSON 的结构?

javascript - ES6 Map 仅返回对象键数组

javascript - 在推送之前检查数组中是否存在现有数组

javascript - 如何将具有数组键的对象动态添加到对象文字?

javascript - 交换数组中除 first 和 last 之外的所有元素

javascript - 当我编辑 htaccess 时,CSS 和 JS 丢失了

javascript - 正则表达式的行为不符合预期

arrays - 找到数组中出现 m 次的唯一整数

javascript - 用键值存储数组

使用 ctx 的带有交替颜色列的 Javascript 绘图板