JavaScript中 call 与 apply、bind 的使用
来源:互联网 发布:网络百家家乐是真的吗 编辑:程序博客网 时间:2024/05/16 18:38
今天遇到一道关于call与apply使用的题目,在此总结一下关于 call 与 apply 的使用方法。
题目如下:以下程序执行结果为3的选项是?
var a = {X:1,Y:2};var b = { X:2, Y:2, add:function(){ return this.X+ this.Y; }};console.log(b.add.call(a)); //3console.log(b.add.apply(a)); //3console.log(b.excute('1+3')); //报错console.log(b.add.bind(a)); //返回函数
题目解析:
console.log(b.add.call(a));
通过call(obj)方法将对象b的add方法添加到对象a下。此时a对象为:
var a = {
X:2,
Y:2,
add:function(){
return this.X+ this.Y;
}
};
因此,很好理解执行结果为3了。console.log(b.add.apply(a));
在此时与以上方法相同,它们的区别写在后面。
console.log(b.excute(‘1+3’));
对象b下没有excute这个方法,则报错。
console.log(b.add.bind(a));
此方法将b.add()方法绑定在a下,相当于为a添加了add()方法,但是不是真的复制,执行a.add()也会显示在对象a下找不到add方法。要想显示结果3,可修改为console.log(b.add.bind(a)())。
call 与 apply 方法解读
call 与 apply 都存在于这样的环境下,对象a想要使用对象b中方法,自己比较懒,不想再新建,就出现了call和apply方法,直接使用对象b的方法。
定义:
调用一个对象的一个方法,以另一个对象替换当前对象。区别
根据方法格式就可以看出区别啦!
call([thisObj[,arg1[, arg2[,[,.argN]]]]]);
apply([thisObj[,argArray]]);区别在于 apply的第二个参数必须是数组或者arguments(参数数组)。call 的第二个参数可以是任意类型,如果为方法传递多个参数,call方法必须逐个制定参数。
3.说明
在call 方法中,如果没有提供 thisObj 参数,那么全局对象被用作 thisObj。
在apply方法中,如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 如果没有提供 argArray 和 thisObj 任何一个参数,那么 全局对象将被用作 thisObj, 并且无法被传递任何参数。
4.bind()方法
看到一篇总结的比较好的文章,点开了解详细信息吧!Javascript中bind()方法的使用与实现
- JavaScript中 call 与 apply、bind 的使用
- Javascript中call,apply,bind方法的详解与总结
- JavaScript中apply()、call()和bind()的相似与区别
- JavaScript 中apply()、call()和bind()方法的使用
- javascript中call、apply、bind方法的使用
- Javascript中call(),apply(),bind()的区别
- Javascript中apply、call、bind的区别
- Javascript中apply、call、bind
- Javascript中apply、call、bind
- Javascript中apply、call、bind
- Javascript中apply、call、bind
- Javascript 中 apply、call、bind
- Javascript中apply、call、bind
- Javascript中apply、call、bind
- Javascript中apply、call、bind
- javascript中call apply 与 bind方法详解
- javascript:call与apply与bind
- javascript中apply、call和bind的区别
- Android设计模式之简单工厂模式(一)
- S3C2440看门狗定时器(Watchdog)
- 《Java编程思想》读书笔记
- 17高软实验二报告
- luogu1084【2012提高】疫情控制(二分答案+贪心+倍增)
- JavaScript中 call 与 apply、bind 的使用
- org.apache.commons.lang3.StringUtils,UUID和LoadingCache
- [NOIP2017模拟]跳高
- 算法进阶之贪心算法
- JAVA学习笔记(6)--String的常用方法
- 整合JavaWeb面试过程中相关问题
- iOS 中APP被拒以及解决办法总结<待更新>
- 如何阻止button默认的刷新页面操作
- C++面试考前一天抱佛脚(哈哈哈哈啊哈哈哈)