Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何运营开发者社区?

如何运营开发者社区?

提问于 2018-06-27 02:43:38
回答 0关注 0查看 171

回答 2

以往V

发布于 2017-12-20 09:05:08

arguments对象实际上不是一个数组的实例,也没有任何数组方法。所以,arguments.slice(...)不会工作,因为参数对象没有切片方法。

数组确实有这种方法,并且因为arguments对象与数组非常相似,所以两者是兼容的。这意味着我们可以使用参数对象的数组方法。而且由于数组方法是用数组构建的,他们将返回数组而不是其他的参数对象。

那为什么要用Array.prototype?这Array是我们从(new Array())中创建新数组的对象,并且这些新数组通过方法和属性(如slice)传递。这些方法存储在[Class].prototype对象中。因此,为了提高效率,而不是通过访问切片的方法(new Array()).slice.call()或[].slice.call(),我们只是从样机把它直。这是因为我们不需要初始化一个新的数组。

但是为什么我们首先要这样做呢?那么,正如你所说,它将一个参数对象转换成一个数组实例。然而,我们使用分片的原因更多的是“黑客”。切片方法会把一个数组切片并将该切片作为一个新数组返回。除了参数对象作为上下文之外,不传递任何参数(除了参数对象作为其上下文)将导致切片方法获取传递的“数组”(本例中为参数对象)的完整块并将其作为新数组返回。

akjok54

发布于 2017-12-20 09:04:45

当.slice()正常调用时,this是一个数组,然后它只是迭代该数组,并且完成它的工作。

数组是如何this在.slice()函数中?因为当你这样做时:

代码语言:txt
AI代码解释
复制
object.method();

...该object自动成为价值this的method()。所以:

代码语言:txt
AI代码解释
复制
[1,2,3].slice()

... [1,2,3]Array被设置为thisin 的值.slice()。

但是如果你可以用别的东西来代替this价值呢?只要你替换的数字.length属性和一些属性是数字索引,它应该工作。这种类型的对象通常被称为类似数组的对象。

该.call()和.apply()方法让你手动设置的值this的函数。因此,如果我们将thisin 的值设置.slice()为一个类似数组的对象,.slice()将会假设它正在与一个数组一起工作,并将完成它的工作。

以这个普通对象为例。

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
var my_object = {
代码语言:txt
AI代码解释
复制
    '0': 'zero',
代码语言:txt
AI代码解释
复制
    '1': 'one',
代码语言:txt
AI代码解释
复制
    '2': 'two',
代码语言:txt
AI代码解释
复制
    '3': 'three',
代码语言:txt
AI代码解释
复制
    '4': 'four',
代码语言:txt
AI代码解释
复制
    length: 5
代码语言:txt
AI代码解释
复制
};

这显然不是一个数组,但是如果你可以将它设置为this值.slice(),那么它就会工作,因为它看起来像一个阵列足够.slice()正常工作。

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
var sliced = Array.prototype.slice.call( my_object, 3 );

例如: http : //jsfiddle.net/wSvkv/

正如您在控制台中看到的那样,结果就是我们所期望的:

代码语言:txt
AI代码解释
复制
['three','four'];

所以当你将一个arguments对象设置为this值时,会发生这种情况.slice()。因为arguments有一个.length属性和一堆数字索引,.slice()就像在一个真正的数组上工作一样。

和开发者交流更多问题细节吧,去 写回答
相关文章
如何选择工作
这个问题在『黑客与画家』里 Paul Graham 已经给出了答案:选择那些具备 可测量性 和 可放大性 的工作。 我们来详细说说。注意以下的话跟「敏捷宣言」的措辞类似 —— 当你有选择的权利和能力时,优先选择前者而不是后者。但,这并不意味着后者不好。 首先是行业的选择。蓬勃发展的行业 要优于处于稳定的行业。比如说同样是软件行业,互联网就是比传统软件行业发展速度快得多的行业。而互联网内部,各个方向的发展也有泾渭之分。看看 Gartner 的报告(比如说:http://www.gartner.com/smar
tyrchen
2018/03/29
9550
如何选择工作
[杂谈] 如何选择工作
最近公司处在动荡期,很多人离开了。我以前的一个下属也要离开,并且是彻底离开数通领域,投身互联网。我跟他在楼下的咖啡厅聊了很久,感觉他真的想通了,知道自己要什么。三十来岁想通自己要什么不是件丢人的事,也并不迟,我也是近三十岁的时候才想通。在此祝福他,希望他在互联网这个伟大的行业里找回自己。 我曾经在途客圈跟团队谈过「如何选择工作」和「公司和个人的关系」,我想很多人都有类似的困惑,所以在此和大家探讨一下。 如何选择工作 其实四月六日那篇『为什么卖产品的比做产品的挣得多』已经给出了答案(如果你看了『黑客与画家』的
tyrchen
2018/03/28
1K0
[杂谈] 如何选择工作
Filter如何工作
在 web.xml 文件中通过<filter>和<filter-mapping>标签组合对编写的filter类进行注册,并设置它所能拦截的资源 实际上,Filter可以完成与Serlvlet一样的工作
JavaEdge
2018/05/16
8760
如何选择工作
对有些人来谁,年,是一段糟心旅程的终点,又将是一段未知的旅程的起点。抢红包的浮夸背后,是一颗颗躁动的心对未来的期许。心不在焉地吃着火锅唱着歌,搓着麻将点着炮,他们的大脑在思考未来: 2015,我是不是该把2012的计划完成了? 2015,我该换个神马工作了? 于是,这几天,留言里这样的问题陡然多了起来。幸好,程序君写了一年的文章,也算有点存货,遇到一个就biu的一声丢出一篇文章。不过丢得多了,也烦了,干脆找出原文,稍作修订,发出来 --求个红包-- 供大家参考。 这是去年四月六日的一篇旧文,看过了的,直接拖
tyrchen
2018/03/28
1K0
如何选择工作
Servlet 如何工作
我们已经清楚了 Servlet 是如何被加载的、初始化及其体系结构,现在的问题就是它是如何被调用的. 用户从浏览器向服务器发起的一个请求通常会包含如下信息 http://hostname: port
JavaEdge
2018/05/16
6970
二、DNS如何工作?
  如前所述,DNS 的核心是一个分层系统。在这个系统的顶部是所谓的 “根服务器”。这些服务器由各种组织控制,并由 ICANN(互联网名称和数字地址分配公司)授权。
咻一咻
2020/05/29
7330
Epoll 如何工作的?
epoll 是Linux平台下的一种特有的多路复用IO实现方式,与传统的 select 相比,epoll 在性能上有很大的提升。本文主要讲解 epoll 的实现原理,而对于 epoll 的使用可以参考相关的书籍或文章。
用户7686797
2020/08/25
9730
Springboot 注解如何工作
作者:Parmod 译者:java达人 来源:http://parmodarora.com/2016/01/06/springbootapplication-annotation/(点击文末阅读原文前
java达人
2018/01/31
1K0
Springboot 注解如何工作
[技术地图] CodeSandbox 如何工作? 上篇
这期来关注一下CodeSandbox, 这是一个浏览器端的沙盒运行环境,支持多种流行的构建模板,例如 create-react-app、 vue-cli、parcel等等。 可以用于快速原型开发、DEMO 展示、Bug 还原等等.
_sx_
2019/08/07
6.9K2
[技术地图] CodeSandbox 如何工作? 上篇
哈希函数如何工作 ?
作为一名程序员,您每天都会使用哈希函数。它们在数据库中用于优化查询,在数据结构中用于使速度更快,在安全性中用于保证数据安全。几乎每次与技术的交互都会以某种方式涉及哈希函数。
数据科学工厂
2023/08/10
5340
哈希函数如何工作 ?
Kubernetes是如何工作
过去几年来,运行容器化应用程序的流行度呈爆炸式增长,这已经不是什么秘密了。能够通过代码提供应用程序的依赖项来迭代和发布应用程序是一个巨大的胜利。Gartner表示,到2022年,“超过75%的全球组织将在生产中运行容器化应用程序”。
CNCF
2019/12/04
1.6K0
Kubernetes是如何工作
如何推动横向工作
有些工作做得比较顺利,有的工作推进过程中遇到了一些预期之外的困难,经过近两年的沉淀,一些事情有了心得体会,这里分享下,希望可以帮助大家横向工作推进上有帮助。
春哥大魔王
2023/03/22
9860
如何推动横向工作
容器如何工作:OverlayFS
今天早上,我为未来潜在容器杂志画了一幅 OverlayFS 的漫画,我对这个主题感到兴奋,想写一篇关于它的博客来提供更多详细信息。
用户1880875
2021/09/22
8220
Goroutine是如何工作的
一、Go语言简介 如果你是Go语言新手,或如果你对"并发(Concurrency)不是并行(parallelism)"这句话毫无赶脚,那么请看一下Rob Pike大神关于这个主题的演讲吧,演讲共30分 钟,我敢保证你在这个演讲上花费30分钟是绝对值得的。 总结一下两者(Concurrency和Parallelism)的不同:"当人们听到并发(Concurrency)这个词时,总是会想起并行 (Parallelism),它们之间有相关性,但却是两个明显不同的概念。在编程领域,并发(Concurrency)是独
李海彬
2018/03/21
2.6K0
HTTPS是如何工作的
大家在浏览网页的时候一定有这样的体验,有一些网站在网址那里会显示一个绿色的挂锁,并且网址中“https”相关的字样也是绿色的,聪明的朋友肯定会问,这些颜色和符号代表什么意思呢?想想大家在上网的时候,经常要输入账号和密码,有时候网购还要输入信用卡信息,如果这些信息被偷了,后果是很严重的。是的,这个绿色的锁就是用来保护大家的信息不被黑客窃取。现在很多网站默认使用HTTPS来保护用户的信息,截止2018年4月,Alexa前100万的网站中,32.2%使用HTTPS作为默认设置,互联网最受欢迎的137971个网站中,57.1%使用了HTTPS;Firefox遥测数据显示,70%的网站使用了HTTPS。
大蟒传奇
2018/07/31
2.8K0
HTTPS是如何工作的
Widget是如何工作的
在前面我们介绍各种各样的Widget,相信大家对Wiget的使用都已经有了自己的认识,今天我们就从底层角度看下Widget是如何工作,是什么支撑起了Wiget这个系统。
flyou
2020/05/28
3.7K0
Mysql如何使用order by工作
日常开发中,我们经常要进行字段的排序,但是我们大多不知道排序是如何执行的,今天我们就说说order by 的执行逻辑,
小土豆Yuki
2020/11/03
1.2K0
Goroutine是如何工作的
在golangweekly的第36期Go Newsletter中我发现一篇短文"How Goroutines Work" ,其作者在参考了诸多资料后,简短概要地总结了一下 Goroutine的工作原理,感觉十分适合刚入门的Gophers(深入理解Goroutine调度的话,可以参考Daniel Morsing的" The Go scheduler" )。这里粗译如下。 一、Go语言简介 如果你是Go语言新手,或如果你对"并发(Concurrency)不是并行(parallelism)"这句话毫无赶脚,那么请
李海彬
2018/03/19
2.6K0
JavaScript 是如何工作的🔥 🤖 [视觉解释]
JavaScript 是世界上最受欢迎和最讨厌的语言之一。它被爱,因为它是有效的。您只需学习 JavaScript 即可制作全栈应用程序。它也被讨厌,因为它以出乎意料和令人不安的方式行事,如果您不投入理解该语言,可能会让您讨厌它💔。 这篇博客将解释 JavaScript 如何在浏览器中执行代码,我们将通过动画 gif 来学习它😆。看完这篇博文,你离成为Rockstar开发者又近了一步🎸😎 执行上下文 “ JavaScript 中的一切都发生在一个执行上下文中。” 我希望每个人都记住这句话,因为它是必不可
玖柒的小窝
2021/09/12
3K0
JavaScript 是如何工作的🔥 🤖 [视觉解释]
TypeScript是如何工作的
TypeScript 是一门基于 JavaScript 拓展的语言,它是 JavaScript 的超集,并且给 JavaScript 添加了静态类型检查系统。TypeScript 能让我们在开发时发现程序中类型定义不一致的地方,及时消除隐藏的风险,大大增强了代码的可读性以及可维护性。相信大家对于如何在项目中使用 TypeScript 已经轻车熟路,本文就来探讨简单探讨一下 TypeScript 是如何工作的,以及有哪些工具帮助它实现了这个目标。
ConardLi
2021/09/29
5.9K0
TypeScript是如何工作的

相似问题

哈希表如何工作?

2458

如何确定我正在工作的当前shell?

2378

CSS的“display: table-column”应该如何工作?

22.8K

浏览器中自动填写表单如何工作?

4999

C语言的函数调用是如何工作的?

2367
相关问答用户
腾讯云TDP | 先锋会员擅长2个领域
某公司 | 程序员擅长1个领域
腾讯云TDP | 产品KOL擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档