我可能在这里遗漏了一些明显的东西,但有人可以一步一步地分解为什么 Array.from({length: 5}, (v, i) => i)
返回 [0 , 1, 2, 3, 4]
?
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from
我没有详细了解为什么会这样
最佳答案
当 Javascript 检查一个方法是否可以被调用时,它使用 duck-typing .这意味着当你想从某个对象调用方法 foo
时,它应该是 bar
类型,然后它不会检查这个对象是否真的是 bar
但它检查它是否有方法 foo
。
因此在 JS 中,可以执行以下操作:
let fakeArray = {length:5};
fakeArray.length //5
let realArray = [1,2,3,4,5];
realArray.length //5
第一个类似于 fake javascript 数组(具有属性 length
)。当 Array.from
获取属性 length
的值(在本例中为 5)时,它会创建一个长度为 5 的真实数组。
这种fakeArray 对象通常称为arrayLike。
第二部分只是一个箭头函数,它用索引值(第二个参数)填充数组。
此技术对于模拟某些对象进行测试非常有用。例如:
let ourFileReader = {}
ourFileReader.result = "someResult"
//ourFileReader will mock real FileReader
关于javascript - `Array.from({length: 5}, (v, i) => i)` 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528557/