js中call,caller,callee,aplly
1.函数的caller属性
(1)、区分函数是在函数体调用还是顶层代码中调用:顶层中调用函数,该函数的caller属性返回null,在函数中调用,会返回调用发i函数的函数;
<script>
function testFun(){
if(testFun.caller === null){
document.write('在顶层中调用');
}else{
document.write('在h函数中调用');
document.write('在' + testFun.caller.name + '中调用');
}
} /*直接调用*/、
testFun();
/*函数中调用*/
funtion test(){
testFun();
}
</script>
2.Arguments的callee属性
(1)、使用Arguments的callee属性来匿名递归调用函数
<script>
function outNum(x,y){
document.write(x + <br>);
if(x < y){
x ++;
return arguments.callee(x,y);
}
else if(x > y){
y --;
return arguments.callee(x,y);
}
else{
return
}
} /*调用*/、
outNum(9,4)
</script>
3.函数的apply()方法和call()方法
(1)、语法:funName.call(this[,arg1[,arg2....]]);
funName.apply(this,[arg1,arg2....]);apply方法后面的参数以数组的额形势传递
<script>
function range(_price){
if(typeof(_price) != 'number'){
this._price = 1000;
}else{
if(_price >1000){
this._price = 1000;
}else{
this._price = _price;
}
}
}
/*aplly写法*/
function Monitor(_price, _name)){
this.name = _name;
range.aplly(this,arguments);
}
/*call写法
function Monitor(_price, _name)){
this.name = _name;
range.call(this,_price);
}
*/
Monitor.prototype = new range(); var Monitor1 = new Monitor('c1',800); document.write(monitor1.name,monitor.price); </script>
js中call,caller,callee,aplly的更多相关文章
- js中arguments,caller,callee,apply的用法小结
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <style typ ...
- js中的caller和callee属性
caller返回一个对函数的引用,该函数调用了当前函数. functionName.caller functionName 对象是所执行函数的名称. 说明对于函数来说,caller 属性只有在函数执行 ...
- js中的caller属性和callee属性
应该用"属性"来称呼caller和callee,而不是方法. caller:返回调用当前函数的函数的引用.a调用b,则返回a(a是boss,因为a把b叫过去干活了): callee ...
- js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- js经验点滴js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- js call apply caller callee bind
call apply bind作用类似.即调用一个对象的一个方法,以另一个对象替换当前对象. call 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) ...
- JS中的call、apply、bind 用法解疑
JS中的caller arguments.callee call apply bind方法 一.call()和apply()方法 1.方法定义 call方法: 语法:call([thisObj ...
- javascript 中的 arguments,callee.caller,apply,call 区别
记录一下: 1.arguments是一个对象, 是函数的一个特性,只有在函数内才具有这个特性,在函数外部不用使用. 举例: function test(){ alert(typeof argume ...
- js中的call、apply、bind
在js中每个函数都包含两个非继承而来的方法:call()和apply() call和apply的作用都是在特定的作用域中将函数绑定到另外一个对象上去运行,即可以用来重新定义函数的执行环境,两者仅在定义 ...
- JS中 call() 与apply 方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
随机推荐
- jctable
1.jctable 选择单项并删除: var items = Co["MyTable"].GetSelected("HtmlEle"); if (items.l ...
- 【软件测试】Junit入门
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- charles4.2下载与破解方法以及配置https
Charles的使用方法 Charles下载地址 地址:https://www.charlesproxy.com/latest-release/download.do 2. Charles破解 破解地 ...
- 《Mysql 日志结构》
推荐一首歌 - <往后余生>王贰浪 发现自己每天就听这么几首歌 一:慢查询日志 - SQL 完成查询并完成对于锁资源的释放之后,msqld 会将符合条件的SQL写入慢日志.因此慢日志可能和 ...
- Java之旅_高级教_集合框架
摘自:http://www.runoob.com/java/java-collections.html Java 集合框架 早在Java2之前,java 就提供了特设类.比如:Dictionary,V ...
- xca自签发证书解决chrome浏览器证书不可信问题记录
xca打开的界面 依次File, New DataBase,选择xdb文件保存路径,再输入密码 切换到Certificates页面,点击New Certificate 出现如下界面 因为要创建根证书, ...
- java 数组(二)
public class ArrayDemo{ public static void main(String[] args){ int[] arr = {1,5,3,8,2,9,17,13}; get ...
- Android Studio 下载与安装配置
一.下载 Android Studio下载链接:http://www.android-studio.org/ 1.进入安卓中文社区官网进行下载. 2.下载完成. 二.安装与配置环境 1.选择“此电脑” ...
- Spring对Bean装配详解
1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...
- 【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件
1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...