腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
原创分享
专栏作者
举报
363
文章
396346
阅读量
34
订阅数
订阅专栏
申请加入专栏
全部文章
node.js
编程算法
javascript
c++
http
linux
socket编程
unix
tcp/ip
数据结构
进程
api
函数
nginx
https
打包
缓存
github
存储
网络安全
内存
udp
v8
单片机
网站
操作系统
事件
线程
原理
task
定时器
队列
内存管理
系统
源码分析
其他
php
json
android
云数据库 Redis
ide
dns
handle
对象
管理
内核
数据
java
c 语言
access
文件存储
express
面向对象编程
npm
allocation
exit
init
io
list
schedule
sleep
socket
链表
连接
异步
源码
lua
bash
react
html
ecmascript
git
消息队列 CMQ 版
开源
安全
kafka
sdk
rust
bind
block
gc
profile
sample
struct
sys
timeout
timer
遍历
布局
服务器
监控
性能
异常
负载均衡
bootstrap
xml
arm
云数据库 SQL Server
sql
apache
云函数
SSL 证书
腾讯云测试服务
爬虫
spring boot
hashmap
rpc
uml
数据分析
数据处理
物联网
腾讯云开发者社区
utf8
小程序·云开发
add
alarm
area
async
attr
bitmap
boolean
client
clone
combine
counter
cpu
data
debug
default
double
epoll
error
event
fill
filter
fork
free
func
glibc
handler
heap
int
intel
ip
join
load
location
map
mmap
mutex
nan
null
parent
pipe
post
process
queue
release
repeat
scope
space
state
stream
swap
tcp
thread
token
trace
trie
x86
变量
测试
插件
多线程
集合
垃圾回收
生命周期
数组
同步
通信
异常处理
优化
指针
状态机
搜索文章
搜索
搜索
关闭
js的bind函数那些你可能没想过的点
ecmascript
加上上一篇文章中说的情况,我们可以总结到,当我们对一个bind返回的函数进行操作时,实际上这种操作是对目标函数的操作,也就是调用bind的函数。下面我们看一下es5文档的说明。
theanarkh
2019-03-06
562
0
js的arguments分析
ecmascript
编程算法
http
执行结果中可以发现,argument和函数的参数列表中的变量是有关联的,这里假设函数的实参和形参个数是一样的。这个结果的背后到底是怎么回事,看了一下es5的arguments文档,尝试分析一下这个问题。 根据文档,当执行一个函数的时候,首先要执行CreateArgumentsObject 这个函数,并且把 1.当前执行的函数(也就是函数指针)fn 2.执行函数时用户实际传进来的参数列表args 3.函数声明中的实参列表名names 4.函数的变量环境对象env 这四个参数传进去,然后在CreateArgumentsObject 里,首先用Object函数创建一个空的对象obj,然后先往这个对象里挂载一些属性,其中包括但不限于: 1.设置该对象的Class为Arguments(这个我们用Object.prototype.toString.Call(arguments)可以看到) 2.设置该对象的构造函数为Object(通过arguments.constructor可以看到) 3.设置length为args的长度。 4.设置原型为Object.prototype 属性都是通过defineOwnProperty函数设置的,然后迭代实参列表,把每一个实参元素存起来,不过,这个并不仅存储在obj对象里。还重新生成一个对象parameterMap来存储,每一步具体的操作为: 1.把实参元素存储到obj里。 2.判断当前的索引是否小于函数fn实参变量names的长度,如果是就把实参元素存储一份到parameterMap里,并且设置描述符为{[[Set]]: p, [[Get]]: g, [[Configurable]]: true},es5说到这句话Let g be the result of calling the MakeArgGetter abstract operation with arguments name and env,也就是说p,g是一个用函数生成的函数,并且存在一个闭包,以后访问的时候是去访问env里面的值。到这里我们还没看出什么问题,arguments对象看起来差不多是这样的
theanarkh
2019-03-06
663
0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档