您是否遇到过[].slice.call(arguments)Array.prototype.slice.call(arguments)在任何 JavaScript 代码中?

这个令人困惑的代码用于将具有.length属性和数字索引的参数对象(就是所谓的类数组对象)转换为真正的数组,该数组调用两种方法:slice()call()

slice()

用法:

slice(beginIndex)
slice(beginIndex, endIndex)
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];console.log(animals.slice()); // [ 'ant', 'bison', 'camel', 'duck', 'elephant' ]
console.log(animals.slice(2)); // ["camel", "duck", "elephant"]
console.log(animals.slice(2, 3)); // [ 'camel' ]

call()

用法:

call()
call(thisArg)
call(thisArg, arg1)
call(thisArg, arg1, arg2)
call(thisArg, arg1, ... , argN)
function Product(name, price) {this.name = name;this.price = price;
}function Food(name, price) {Product.call(this, name, price);this.category = 'food';
}console.log(new Food('cheese', 5).name); // cheese

因此,如果我们将this的值指定slice()给一个类似数组的对象,
我们就可以使slice()该方法在该对象上工作,并且如果我们在slice()没有传递可选参数的情况下调用,它将把整个块作为一个新数组返回。

let listObj = {'0': 'zero','1': 'one','2': 'two',length: 3
};let arr = [].slice.call(listObj);
console.log(arr); // [ 'zero', 'one', 'two' ]

JavaScript - 你见过 [].slice.call() 吗?相关推荐

  1. JavaScript中String的slice(),substr(),substring()三者区别

    JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...

  2. JavaScript 所见所得文本编辑器 Froala Editor 4.0.17Crack

    Froala Editor v4.0.17 清除格式工具现在可以从粘贴的内容中删除内联样式. 2023 年 1 月 24 日 - 9:07新版本 特征 清除格式工具现在可以从粘贴的内容中删除内联样式. ...

  3. 狂神Javascript笔记

    学习狂神JavaScript所记录的笔记 Javascript笔记 一.前端核心分析 1.1.概述 Soc原则:关注点分离原则 Vue 的核心库只关注视图层,方便与第三方库或既有项目整合. HTML ...

  4. 前端学习 之 JavaScript基础

    一. JavaScript简介 1. JavaScript的历史背景介绍 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时 ...

  5. 狂神说HTML5 + CSS + JavaScript 笔记(已完结)

    HTML HTML:Hyper Text Markup Language(超文本标记语言) HTML 5 + CSS 3 W3C:World Wide Web Consortium(万维网联盟) W3 ...

  6. JavaScript数组方法大全解

    0 前言 本文只讲解标准化方法,而不会讲解实验性方法,如at().groupBy().groupByMap()和toSource(). 数组中的部分方法需要提供区间范围begin/start和end, ...

  7. JavaScript学习(十)

    目录 练习: String对象的方法 1.查找字符串 (1)charAt()方法 (2)indexOf()方法 (3)lastIndexOf()方法 2.截取字符串 (1)silce()方法 (2)s ...

  8. jQuery 遍历 - slice() 方法

    实例 选中所有段落,然后将所选内容缩减为只包含第一和第二个段落: .slice(0, 2) 亲自试一试 定义和用法 slice() 把匹配元素集合缩减为指定的指数范围的子集. 语法 .slice(se ...

  9. 37个JavaScript基本面试问题和解答

    1.使用typeof bar ==="object"来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免? 尽管typeof bar ==="object&qu ...

最新文章

  1. (转)C# 3.0 LINQ 的演变及其对 C# 设计的影响
  2. 多种分布式文件系统简介
  3. Linux软件包管理基本操作入门
  4. HADOOP2.5.0_64安装日志
  5. Linux安装软件包
  6. java任何表达式都可以当作语句_在Java语言中语句用分号终止,并不是所有的表达式都可以构成语句...
  7. ArcGis开发过程中遇到HRESULT:0x80040213错误
  8. ceres-solver学习笔记
  9. jQuery是什么,jQuery入门简介
  10. 小型ASP服务器|简洁asp服务器
  11. java map删除key_Java HashMap remove()方法
  12. FireMonkey 跨平台框架下的图片缩放和 JPEG 编码
  13. ARINC818(FC-AV)协议,ADVB
  14. mysql bcnf_bcnf范式
  15. 计算机时间无法保存更改,怎样更改电脑右下角时间设置 不能修改怎么办
  16. 易宝支付回调不成功问题解决
  17. 国外电子与通信教材系列最新目录单
  18. 大学生就业的三方协议基本概述
  19. mapreduce面试问题_MapReduce问题与解答第2部分
  20. HashMap和TreeMap

热门文章

  1. 计算机的四屏故障维修,四则电脑显示器硬件故障检修实用技巧
  2. tcpreplay命令详解
  3. 软考知识点---10数据库基础
  4. java 有序的list_Java 中的 List —— 有序序列
  5. Django 数据库常用字段类型
  6. LWIP-TCP Server连接两次之后无法连接问题
  7. 浮点数打印其实是个复杂的过程
  8. mybatis-源码
  9. vim如何与外界复制粘贴
  10. vi/vim中复制粘贴命令