【apply和call的使用和区别】胸怀万里世界, 放眼无限未来。这篇文章主要讲述apply和call的使用和区别相关的知识,希望能为你提供帮助。
apply :Function.apply(obj, args)接收两个参数:
obj: 改变Function的this指向,使其指向obj;
args: 传入给函数的数组参数;
call:Function.call(obj, param1, param2, param3...)
obj: 改变Function的this指向,使其指向obj;
args: 传入给函数的数组参数;
实例:
function add(c, d) { return this.a + this.b + c + d; } var strObj = { a: ‘今天‘, b: ‘天气‘}; console.log(add.apply(strObj, [‘真‘, ‘好‘])); // 今天天气真好 console.log(add.call(strObj, ‘真‘, ‘好‘)); // 今天天气真好
apply和call的区别:
-
参数的传入形式不同:
call有一个及以上的参数, 第一个参数是this指向的对象,后面的参数均是传入Function的参数,有两个就是传给Function两个参数,有三个就是传了三个,有几个传几个;
-
使用场景不同:
若参数顺序不一致,比如:父函数 Person(name, age)子函数 Student(age, name, grade),就可以使用call,指定参数对应值的位置(Student.call(this, name, age, grade));
apply和call可用于继承
function Class10(){ this.showSub = function(a,b){ alert(a - b); } } function Class11(){ this.showAdd = function(a,b){ alert(a + b); } } function Class12(){ Class10.apply(this); Class11.apply(this); // Class10.call(this); //Class11.call(this); } var c2 = new Class12(); c2.showSub(3,1); //2 c2.showAdd(3,1); //4
推荐阅读
- APP嵌入移动端银行卡识别SDK,通过手机摄像头扫描提取银行卡号
- MyBatis modelxmlmapper 自动生成,附源码
- Hbuilder 生成移动App资源升级包
- 如何查看android studio sdk路径配置
- 基于Android 6.0 的蓝牙开发-- 发送数据,接收数据,实现改变色板功能
- 基于Android 6.0 的蓝牙开发-- 开启,关闭,搜索,连接
- 安卓AlertDialog四种对话框的最科学编写用法
- Mac Electron App 签名后打开闪退
- Android studio 自动生成内部属性变量加 m