程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了重用内置数组方法 - JS - 困惑大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决重用内置数组方法 - JS - 困惑?

开发过程中遇到重用内置数组方法 - JS - 困惑的问题如何解决?下面主要结合日常开发的经验,给出你关于重用内置数组方法 - JS - 困惑的解决方法建议,希望对你解决重用内置数组方法 - 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,请注明来意。