[].slice.call(arguments)模拟实现 Array.of
最近在读《ES6标准入门》这本书,无意间看到下面这段代码:
// Array.of()方法可以用下面的代码模拟实现。
function ArrayOf(){return [].slice.call(arguments);
}
不太理解这段代码的原理,于是觉得弄清楚到底是怎么做到的
首先弄清楚slice方法
slice() 方法返回一个新的数组对象,一个由 begin 和 end 决定的原数组的浅拷贝
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]
可能我对于slice方法只理解到了这一层,所以我不明白上面代码为什么能实现
于是,在MDN上,我找到了下面的内容
看到这里谜团也就解开了,
数组slice方法还有另外一个作用,就是将类数组对象转换成数组,但是要将方法通过call()的方式绑定到 类数组对象 上
[].slice.call(arguments)模拟实现 Array.of相关推荐
- Array.prototype.slice.apply(arguments)和[].slice.apply(arguments)解析
我们知道,函数内部 arguments 是一个类数组对象,不是真正的数组,因此也无法使用数组的各种方法.想详细了解 argument 对象可以前往函数中的 arguments. (function f ...
- [].shift.call( arguments ) 和 [].slice.call( arguments ) 解释
经典的 [].slice.call( arguments ) 关于这个的解释网上有很多,大多是 "把类数组对象转为数组对象".确实这是我们想要实现的功能! 但这仅仅是说明了结果并没 ...
- [转载]Array.prototype.slice.call(arguments,1)原理
Array.prototype.slice.call(arguments,1)该语句涉及两个知识点. arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上 ...
- js Array.prototype.slice.call(arguments,0) 理解
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与co ...
- 详解 Array.prototype.slice.call(arguments)
首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...
- Array.prototype.slice.call(arguments,0); 上下调用模型
var fn9 = (function () {var arr = {}; //缓存对象var counter = function (arr) { //计算函数//args也就是fn9(1, 2, ...
- JS之函数实际参数转换成数组的方法[].slice.call(arguments)
实际参数在函数中我们可以使用 arguments 对象获得 (注:形参可通过 arguments.callee 获得),虽然 arguments 对象与数组形似,但仍不是真正意义上的数组. 我们可以通 ...
最新文章
- strapi 开源api 内容管理平台试用
- 2020-10-29(Android 的DEX ,ODEX,ELF )
- 全球及中国汽车物流行业未来发展方向与投资机遇研究报告2022版
- 启明云端分享|ESP32-S3一颗融合AI和IOT于一体的芯片,到底有哪些功能!能应用在哪些场景呢
- 成吉思汗:“世界之鞭”还是“人类之王”?
- 数据库Sqlite3
- SpringCloud工作笔记056---mysql自增序列管理表_自增序列函数创建
- 甘特图制作_使用excel制作甘特图其实很简单,仅需4步搞定,项目进度一目了然...
- 【完美解决】arcgis engine 10.0 for cross platform C++ 在visual studio2010上编译的AE程序 的License无法初始化错误。...
- 循环神经(LSTM)网络学习总结
- (九)洞悉linux下的Netfilteriptables:网络地址转换原理之DNAT
- FOC电机控制之SVPWM原理与实现
- 汽车营销与保险【1】
- 论文排版一步搞定之公式——(公式居中,编号居右)
- 你真的会写for循环吗?来看看这些常见的for循环优化方式
- 我做过的本职之外的事情
- 403forbiden解决
- 普通话转换成方言的语音识别方法
- 做强信息产业 拓宽智慧城市发展路径
- Java开发 - 消息队列之RabbitMQ初体验
热门文章
- 在mac中导入hadoop2.6.0源代码至eclipse
- 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
- TensorFlow学习笔记(二十八)CNN的9大模型之AlexNet
- Keras笔记(一)一些基本概念
- [阿里]基于多任务学习的CVR预估模型ESM2
- 机器学习实战:使用lightGBM预测饭店流量
- outlook错配置账户到exchange后的删除办法
- 圆方圆学院零基础入门学习Python(绝对干货,值得学习)
- 远程阿里云window服务器报错身份验证错误
- 解决popup不随着window一起移动的问题