本文摘自PHP中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于JavaScript函数内部属性的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
函数内部有两个特殊对象,this、arguments,其中arguments是一个类数组对象,包含着传入函数中的所有参数,主要用来保存函数参数。arguments对象还有一个callee属性,callee是一个指针,指向拥有这个arguments对象的函数。
callee
1 2 3 4 5 6 7 |
|
这是一个实现阶乘的函数,采用递归的方式,这种方式存在一个问题就是,当fact的名称更改以后,如果不及时更改函数内部的函数名称,该函数则无效。此时采用callee属性替代当前拥有num参数对象的函数也就是fact.
采用callee实现如下
1 2 3 4 5 6 7 |
|
this
this引用的是函数执行的环境对象,当函数被当做某个对象的方法调用时,此时的this对象引用的是当前调用函数的对象。
不同的环境this指向的值不同,下面是几种this在不同执行环境下所指向的值
方法调用
当函数作为对象方法的时候,函数里的this被绑定到当前对象上(也可以称之为方法调用)
例如:
1 2 3 4 5 6 7 8 9 |
|
上述的increment是一个对象方法,该对象方法内部的this指向的就是当前对象
函数调用
当函数作为非对象方法时候,this绑定到全局对象window,如果此时要调用内部函数可以采用that = this。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
构造函数
用new运算符调用构造函数,会先创建一个连接到构造函数的prototype(原型对象),再将this绑定到该对象
1 2 3 4 5 6 7 8 9 10 |
|
apply\call\bind
绑定this到指定的环境对象
1 2 3 4 5 6 |
|
call :方法调用一个具有给定this值的函数,以及提供的参数列表。
apply: 方法调用一个具有给定this值的函数,以及提供的参数(数组或类数组对象)。
bind :方法创建一个新的函数,调用时设置this关键字为提供的“值”。
ES6 箭头函数
es6箭头函数里的this指向定义时所在的对象,不是执行的环境对象,就说明this在箭头函数里使用时是一个不变的值
1 2 3 4 5 6 7 |
|
箭头函数里this的值指向的是定义时所在的环境对象,es5中实现箭头函数的方法:采用 that = this这种机制,实现this的绑定
以上是对函数的内部属性的理解。
以上就是JavaScript函数内部属性的介绍(附示例)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
javascript中var、let和const之间有什么区别?
更多相关阅读请进入《javascript》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者