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


相关文章
|
10天前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
55 19
|
2月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
4月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
101 32
|
3月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
9月前
|
JavaScript 前端开发
JavaScript基础知识-函数的参数
关于JavaScript函数参数基础知识的介绍。
75 4
JavaScript基础知识-函数的参数
|
9月前
|
JavaScript 前端开发
JavaScript 函数参数
JavaScript 函数参数
69 3
|
11月前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
106 1
|
12月前
|
JavaScript
js -- 函数总结篇,函数提升、动态参数、剩余参数、箭头函数、this指向......
js -- 函数总结篇,函数提升、动态参数、剩余参数、箭头函数、this指向......
|
JavaScript 前端开发
【专栏】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表
【4月更文挑战第29天】`Function.prototype.apply` 在JavaScript中用于动态设定函数上下文(`this`)和参数列表。它接受两个参数:上下文对象和参数数组。理解`apply`有助于深入JS运行机制。文章分三部分探讨其原理:基本概念和用法、工作原理详解、实际应用与注意事项。在应用中要注意性能、参数类型和兼容性问题。`apply`可用于动态改变上下文、传递参数数组,甚至模拟其他语言的调用方式。通过深入理解`apply`,能提升代码质量和效率。
87 3
|
JavaScript
js中函数的传递参数
js中函数的传递参数
147 0