显式绑定法 apply/call(); 通过显式绑定法可以使用另一个对象中的方法

  • apply/call()都是JS预定义的方法, 他们都可以用于将一个对象作为参数调用对象方法
  • FOR example
const person1 = {
nameFunction: function() {
return this.name + this.sex + this.age + '岁';
},
};
const person2 = {
age: 20,
sex: '女',
name: 'Alone'
};
person1.nameFunction.call(person2);// 把函数nameFunction的this指向替换成person2;

call(); 除了可以把对象当参数传过去外, 还能带其他的参数, 形式call(Obj, ...arr);

  • 使用方法
const personClass = {
name: 'Steve Jobs',
age: 65,
sex: '男',
};
const personFun = {
SpeakFunc: function(a,b,c) {
return `姓名${this.name},性别${this.sex},${this.age}岁,${a+b+c}`
}
};
personFun.SpeakFunc.call(personClass, '爱好', 'Mac', '电脑');
const hello = 'hello';
const Mac = 'Mac';
const Yo = 'Yo';
personFun.SpeakFunc.call(personClass, {hello}, {Mac}, {Yo});

apply()

  • 基本和call()一样, 区别传参形式不一样, call()分别接收参数, apply()接收数组参数;
  • 实用方法example: Math.max('1','2','3'); => 分别接收参数,如果是一个数组需要取最大值那么用apply
  • Math.max.apply(null, [1,3,4,5,6]); => 6;
  • 使用方法
const person = {
interest: '玩球',
color: 'black',
house: '太空站',
sex: '男'
};
const interest = '唱歌',
color = 'blue',
house = '火星',
sex = '女';
let personFun = {
interest: '唱歌',
color: 'blue',
house: '火星',
sex: '女',
example: (a, b, c) => {
// 箭头函数this的指向始终表示定义箭头函数的对象=>window or '其他'
return `这个${this.sex}人在${this.house}${this.interest}${a}${b}${c}`
}
};
personFun.example.apply(person, ['好玩','bu','好玩']);
//'这个undefined人在undefinedundefined好玩bu好玩'
// Remark对像函数里面不能写箭头函数
// 改成
let personFun = {
example: function(a, b, c){
return `这个${this.sex}人在${this.house}${this.interest}${a}${b}${c}`
}
};

最新文章

  1. MyEclipse相关部署问题
  2. Wordpress 所有hoor列表
  3. VTID配置
  4. gulp入门演练
  5. shared_ptr:资源管理利器
  6. python数字图像处理(18):高级形态学处理
  7. Java基础相关总结
  8. 【C++】类型转换(学习笔记)
  9. Enyim.Caching 客户端配置及示例
  10. Btrace入门到熟练小工完全指南
  11. Linux下实现流水灯等功能的LED驱动代码及测试实例
  12. 导出Excel并下载,但无法定制样式的方法!
  13. 数据备份--dump(此作者有许多有用的博客文章)
  14. git寻根——^和~的区别(转)
  15. HDU 1008 u Calculate e
  16. 用mp3stego来加密与解密文件的几次尝试
  17. CCF-201512-1-数位之和
  18. MapReduce寻找共同好友
  19. Iframe高度自适应(兼容IEFirefox、同域跨域)
  20. Excel 如何判断某列哪些单元格包含某些字符

热门文章

  1. Windows点击更改适配器选项出现的网络连接为空
  2. JS切割图片-滑动门效果
  3. jvm与dvm两种虚拟机的不同
  4. Solution -「ROI 2019」「LOJ #3192」课桌
  5. Spring Boot AOP 扫盲,实现接口访问的统一日志记录
  6. pytest(13)-多线程、多进程执行用例
  7. python3发邮件脚本
  8. java宝典笔记(一)
  9. ISISv6协议测试——信而泰网络测试仪实操
  10. 不需要高价购买BI工具,掌握这个Excel插件就能碾压大数据