大佬教程收集整理的这篇文章主要介绍了重用内置数组方法 - JS - 困惑,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一段我无法推理的代码。 这些原型数组方法用于 elems 对象,但我不明白为什么 length 会受到它的影响。没有任何已定义的数组。然而,每个添加操作(通过gather 方法)都会增加“长度”。这个对象如何表现得像一个数组?所有这些值都存储在哪里?有人可以对此有所了解吗?
const elems = {
length: 0,add: function(elem) {
Array.prototype.push.call(this,elem);
},gather: function(ID) {
this.add(document.getElementByID(ID))
},find: function(callBACk) {
return Array.prototype.find.call(this,callBACk);
},}
elems.gather('first');
console.log(elems.length === 1);
elems.gather('second');
console.log(elems.length === 2);
const found = elems.find((elem) => elem.ID === 'second');
console.log(found.ID === 'second');
<h1 ID='first'>Hello</h1>
<h1 ID='second'>Stack!</h1>
因为本机 .push
方法 explicitly 获取调用它的类数组对象的 length,向其添加一个,然后将该结果分配给新的 {{1 }} 属性:
.length
所有这些值都存储在哪里?
在对象的 1. Let O be ? ToObject(this value).
2. Let len be ? LengthOfArrayLike(O).
3. Let argCount be the number of elements in items.
4. If len + argCount > 253 - 1,throw a TypeError exception.
5. For each element E of items,do
a. Perform ? Set(O,! ToString(?(len)),E,truE).
b. Set len to len + 1.
6. Perform ? Set(O,"length",?(len),truE).
属性上。这不是隐藏的内部插槽。
以上是大佬教程为你收集整理的重用内置数组方法 - JS - 困惑全部内容,希望文章能够帮你解决重用内置数组方法 - JS - 困惑所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。