gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:43:49 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com