js中函数内部属性arguments和this以及方法apply()和call()

简介: js中函数内部属性arguments和this以及方法apply()和call()

1.函数的内部属性

函数内部有两个特殊对象:arguments和this

arguments:主要保存函数参数

function fac(num){

if(num <=1){

return 1;

}else{

return num * fac(num-1);

}

}

//定义阶乘递归算法,这个函数的执行与函数名fac紧密耦合在一起

//为了消除耦合 可以使用arguments.call.

function fac(num){

if(num <=1){

return 1;

}else{

return num * arguments.callee(num-1);

}

}

//arguments.callee.caller来访问


2.apply()和call()

每个函数都包含两个非继承而来的方法:apply()和call()

function sum(num1,num2){

return num1 + num2;

}

function calSum1(num1,num2){

return sum.apply(this.arguments);//传入arguments对象

}

function callSum2(num1,num2){

return sum.apply(this,[num1,num2]);//传入数组

}

alert(calSum1(10,10));//20

alert(callSum2(10,10));//20

//call与apply作用相同,但使用call时传递给函数的参数必须逐个列举出来

function sum(num1,num2){

return num1 + num2;

}

function callSum(num1,num2){

return sum.call(this,num1,num2);

}

//alert(callSum(10,10));//20


相关文章
|
8天前
|
JSON JavaScript 数据格式
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
12 0
|
13天前
|
JavaScript 前端开发
js中改变this指向、动态指定函数 this 值的方法
js中改变this指向、动态指定函数 this 值的方法
|
19天前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
24 0
|
22天前
|
JavaScript 前端开发
Symbol在JavaScript中还有哪些内置的Symbol可以用于定义特定的方法或属性
Symbol在JavaScript中还有哪些内置的Symbol可以用于定义特定的方法或属性
|
23天前
|
前端开发 JavaScript
前端 JS 经典:函数管道
前端 JS 经典:函数管道
6 0
|
23天前
|
前端开发 JavaScript
前端 JS 经典:判断对象属性是否存在
前端 JS 经典:判断对象属性是否存在
21 0
|
26天前
|
前端开发 JavaScript
JavaScript:this-关键字,2024中级前端开发面试解答
JavaScript:this-关键字,2024中级前端开发面试解答
|
26天前
|
前端开发 JavaScript
前端 JS 经典:apply、call、bind
前端 JS 经典:apply、call、bind
43 0
|
JavaScript 前端开发 数据安全/隐私保护
|
JavaScript 前端开发 数据安全/隐私保护