js函数中两个比较有趣的方法:apply()和call()
来源:互联网 发布:淘宝店logo生成器 编辑:程序博客网 时间:2024/06/05 18:25
js函数中两个比较有趣的方法:apply和call
apply()和call()这两个方法都是每个函数自带的方法,作用是在特定的作用域中调用这个函数。不明白的同学可以这样理解:
学校要体检,咱们是同学,不巧的是今天我嗓子疼,不能说话。这个时候体检老师问我姓名。。。
// 由于我不能说话,所以没有sayName这个方法var me = { name: "王某某"}var you = { name: "李某某", sayName: function(){ console.log(this.name) }}
这个时候怎么办,你肯定得帮我啊
于是乎:
you.sayName();you.sayName.call(me);------------>输出:李某某王某某
你先是说出了自己的名字,然后替我说出了我的名字
例子可能举得不好,但是同学们应该能明白call能做什么了。
call和apply的作用与结果都是一样的,只不过用法不太一样。
他们的共同作用就是:设置函数体内this对象的值
用法
apply
apply()接受两个参数,第一个是指定函数发生的作用域,第二个参数是可以是数组,也可以是arguments对象。当函数执行时,会将apply()的第二个参数作为函数执行所需要的参数。
function connectStr(){ var ret = ''; // 把传进来的所有字符串连接起来 if(!arguments.length) return ret; for(let i=0;i<arguments.length;i++){ ret+=arguments[i]; } return ret; } function callConnectFunc(str1,str2){ // 这里的this指的是window(严格模式下会是undefined) console.log(connectStr.apply(this, [str1,str2])); // 会发现两种调用它结果是一样的 console.log(connectStr.apply(this, arguments)); } callConnectFunc('1','2'); ------------>输出:1212
下面我们赶紧来看看call是怎么调用的把
call
call()方法的第一个参数与apply相同,都是指调用call或apply的函数的函数体内this对象的值。但是call()方法从第二个参数以后都代表执行函数要传递的参数(就是apply第二个参数,一一罗列出来)
function callConnectFunc(str1,str2){ // 这里用call来调用原函数,但是要把所有参数一一列举出来,对于不明确参数个数时不太合适 console.log(connectStr.call(this, str1, str2));}callConnectFunc('1','2'); ------------>输出:12
阅读全文
0 0
- js函数中两个比较有趣的方法:apply()和call()
- js中的apply()和 call() 方法比较
- js中对call()函数和apply()函数的深入探索
- 【JS--基础--函数】--函数的通用方法-call()和apply()
- js中call和apply(函数的上下文调用模式)详解
- js中call和apply(函数的上下文调用模式)详解
- js 中apply方法和call方法的详解
- 关于Js函数对象的apply()和call()方法
- 关于js中call()和apply()方法的区别
- 谈谈关于js中关于函数的apply和call方法的理解
- 关于js中call和apply函数的应用
- JS中call和apply方法
- JS中call()和apply方法
- Js中apply()和call()方法
- JS中call和apply方法
- 【js】javascript中call()和apply()方法的区别
- JS中call和apply方法的区别
- js中apply和call方法的应用
- Linux上LAMP服务器搭建
- uva1627
- 基于Django的微信公众号开发(4) -- 配置云数据库和本地测试库
- hihocoder 1636 Pangu and Stones
- mariadb
- js函数中两个比较有趣的方法:apply()和call()
- model和modelAttribute
- [14]_关于STM32的存储类型和启动方式、代码下载
- mac下idea的使用之代码调试debug篇
- SSH原理与运用(二):远程操作与端口转发
- Eclipse如何还原和重置窗口布局
- Java 9 中的 9 个新特性
- 【离散数学】1.1集合的初见
- awk --help