函数内部属性 arguments、this 以及非继承而来的方法 call()和 apply()
来源:互联网 发布:域名注册是免费么? 编辑:程序博客网 时间:2024/06/05 18:27
arguments
arguments 是类数组对象,包含传入函数的所有参数。该对象有一个callee属性,是一个指针,指向拥有这个arguments 对象的函数。
//递归function factorial(num) { if(num <= 1) { return 1; } else { return num*factorial(num-1); }}
上面的写法,是可以的,但是如果改函数名就需要同时改两个地方
//将函数名换成arguments.callee(指向函数的指针)function factorial(num) { if(num <= 1) { return 1; } else { return num*arguments.callee(num-1); }}
this
this指向函数执行时所处的作用域。在全局作用域中调用函数时,指向window。 (这种表示不太准确,但我觉得会好理解一点。)
var color ='red';var obj = {color:'blue'};function sayColor() { return this.color;}sayColor();//redobj.sayColor = sayColor;obj.sayColor(); //blue
call()和apply()
call() 和apply()在特定作用域 调用函数,说白了也就是设置this对象的值,扩充作用域。都包含两个参数,第一个参数是作用域,第二个是传入的参数。
两者接收第二个参数,也就是【传入参数】的方式不同,call() 要一个一个传入,apply接收数组。
function sum(num1, num2) { return num1+num2;}function callSum(num1,num2) { return sum.call(this, num1, num2);}function applySum(num1, num2) { return sum.apply(this, arguments); //return sum.apply(this, [num1, num2]);}callSum(10,10);//20applySum(10, 10);//20
//可以与上面this里的例子做个比较var color ='red';var obj = {color:'blue'};function sayColor() { return this.color;}sayColor();//redsayColor.call(this); //redsayColor.call(window); //redsayColor.call(obj); //blue
阅读全文
0 0
- 函数内部属性 arguments、this 以及非继承而来的方法 call()和 apply()
- 函数非继承方法:apply()和call()
- 函数的内部属性this,arguments 和 函数的属性和方法
- 函数内部属性arguments和this讲解
- js函数内部属性arguments和this
- Tips:函数的内部属性 arguments和 this
- 函数的属性length、prototype和方法call()、apply()
- 函数中的this指向,以及 修改this指向的 call/apply/bind方法
- 函数的arguments,caller,callee,call,apply
- js:函数的内部属性Arguments(callee、this)
- 构造函数与构造函数的继承以及call和apply的区别
- 构造函数与构造函数的继承以及call和apply的区别
- javascript基础(函数属性arguments,方法:call,apply)(二十)
- javascript函数对象的内部方法call(), apply(), bind()
- javascript 函数的方法call()和apply()
- javascript中this,apply和call方法的使用
- JavaScript中的函数:函数的apply、call方法和length属性
- javascript中的继承(JS基于原型链的继承),以及JS中的call和apply函数
- 360在线编程题2-2017校招服务器端-跳格子
- python 2.6 mycli安装,File "/usr/bin/mycli", line 7, in <module>
- vi/vim使用进阶: 移动光标操作(一)
- res目录新建文件夹不显示
- 升级到xcode9 shell脚本自动打包失败
- 函数内部属性 arguments、this 以及非继承而来的方法 call()和 apply()
- 知识
- pthread_atfork解读
- RadioButton+Fragment和XlistView及多条目加载
- 使用WebServiceStudio测试WebService接口
- 程序员之死为我们敲响的一记警钟
- ajax请求的数据存在中文乱码,如何设定编码格式
- C#委托求俩个数的和与差
- restful和http的区别