JS 中的call,apply,bind 和 caller, callee
1 call,apply,bind都是Function里面原生支持的方法,是JavaScript引擎内在实现的,每个Function的实例都有这三个属性。
2 bind 跟call,apply的区别是:call,apply都是立刻执行的,不能用于函数申明或绑定事件里面。
3 caller 和 callee
(1)caller 返回的是一个调用了该函数的函数,即是一个函数的引用。caller属性只有在函数执行时才有定义。
function callerDemo() {if ( callerDemo.caller) {var a= callerDemo.caller.toString();console.log(a);} else {console.log("this is a top function");}}function handleCaller() {callerDemo();}callerDemo(); // 输出的是handleCaller这个函数的引用
(2)callee 返回正在被执行的函数对象,调用方法:[function.]arguments.callee,该属性经常被用于递归。需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。
var sum = function(n){if(n <= 0){return 1;}else{return n + arguments.callee(n - 1);// return n + sum(n - 1);}}
转载于:https://www.cnblogs.com/zyc-undefined/archive/2013/04/27/3153220.html
JS 中的call,apply,bind 和 caller, callee相关推荐
- JavaScript中的call,apply,bind学习总结
JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...
- js中call()与apply()方法
菜鸟级别的选手,学习+意会.欢迎指正 参考文章 http://uule.iteye.com/blog/1158829 http://blog.csdn.net/myhahaxiao/article/d ...
- js 中call()与apply()区别与常见用途
在JS中Function原型定义了两个方法,分别是Function.prototype.call和Function.prototype.apply. call与apply的区别 Function.pr ...
- JS 中 call()、apply()、bind() 的用法
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17obj.myFun() // 小张年龄 undefined 例 2 show ...
- JS函数方法Call Apply Bind运用
JS 函数非继承的call和apply方法 同:call & apply 主要是用于扩展this指向,降低this作用域与函数之间的耦合度: 区别:传参差异 function.call(thi ...
- js中call与apply用法
来源:http://blog.csdn.net/sunboy_2050/article/details/6592082 前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目, ...
- 想起温习一下JS中的this apply call arguments
很多时候讲到语言入门,大家会认为就是要了解一下语言的语法.数据类型和常用函数.这一课对于所有的计算机专业的毕业生来说都可以自学,然而在最近的实践中(带了两个实习生自学js),我发现他们在学习js的时候 ...
- js中call和apply的作用和用法
call和apply的用途是完全一样的.改变函数中this的指向: 为什么要改变this的指向呢?这个有什么用?有哪些场景呢? 首先this的指向总是在变的,this的指向是由函数执行时所在的环境决定 ...
- Js中 call() 与 apply() exports
call() 调用一个对象的方法,用另一个对象替换当前对象,可以继承另外一个对象的属性 Function.call(obj[, param1[, param2[, [,...paramN]]]]); ...
- 复习javascript中call,apply,bind的用法
一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function m ...
最新文章
- python 内部函数传参_python中函数传参详解
- C++ : 构造函数,拷贝构造函数,移动构造函数,拷贝赋值运算符,移动赋值运算符应用场景
- 原创:PHP内核研究:HASH表和变量
- gcc编译出现dlopen、dlerror、dlsym、dlcolse的解决方法
- TCP三次握手建立连接和四次挥手关闭连接
- java开发区块链_使用Java语言从零开始创建区块链
- 14. Longest Common Prefix【leetcode】
- git base cli
- 《OpenGL超级宝典》第一章:3D图形和OpenGL简介
- 软考-计算机系统知识整理
- 计算机体系结构和计算机组成哪个重要,计算机组成和体系结构教学初探.doc
- python自己制作视频_你还在为看电影发愁?Python制作全网视频播放工具!
- IOS越狱运行Linux,iOS 13.4.1 Linux 简易越狱,重启就能打开
- iPhone内存溢出——黑白苹果
- 下载NVIDIA官方驱动教程
- 火狐浏览器不兼容event问题
- 白话解读“中台”技术
- 如何将高版本的CAD文件转成低版本的CAD文件
- Python计算程序运行时间秒级/毫秒级的两种方法datetime和time
- 微信小程序开发之『侧边栏滑动』特效
热门文章
- RocketMQ 下载、安装与 单机启动
- windows10防Linux,用户禁用Defender提升Win10 Linux子系统性能
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-06 Feign核心源码解读和服务调用方式ribbon和Feign选择...
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_7_等待唤醒机制需求分析...
- jmeter 分布式注意事项
- opencart修改网站顶部电话联系方式
- WPF设计の画刷(Brush)
- 2017.5.12PM
- UITableView 删除cell
- SSIS常用的包—通用的属性