关于 js 作用域和执行上下文就不过多介绍了,本人也是在网上搜集了各种教程才逐渐理解,以下简单理解并说下call 的作用

首先简单理解下执行上下文有关概念,this 的指向就代表当前执行环境的上下文

function Person(name){
this.name = name,
this.speak = function(){
console.log('my name is ' + this.name)
}
}
var p = new Person('张三');
p.speak()

这里的this 就指new出来的对象,调用这个方法的对象

call 简单的来说是改变this的执行上下文环境,改变this 的指向对象,把之前指向 pet 的this 指向了dog对象,所以this 的words属性 变成了dog 对象的属性。后面跟着的参数是执行函数的参数列表,apply 用法相同,后面的参数是参数数组

var pet = {
words:'hello',
speak:function(say){
console.log(say + ' ' + this.words)
}
} var dog = {
words:'wang'
} pet.speak('说话') pet.speak.call(dog,'叫')

最新文章

  1. lua序列化(支持循环引用)
  2. Android的启动模式(上)
  3. Tcsh脚本编程
  4. light oj 1153 - Internet Bandwidth【网络流无向图】
  5. extern C的作用详解
  6. kvstore存储介质redis代码
  7. java 父类构造器
  8. CENTOS手动安装修复python ,YUM CENTOS手动安装修复YUM
  9. recurrent model for visual attention
  10. 搭建正则开源工具Regexper
  11. 从零开始学spring cloud(四) -------- 基础项目搭建
  12. pycharm更新之后pip显示没有main
  13. Mac安装brew(遇到的坑)
  14. 学习 MeteoInfo二次开发教程(三)
  15. spring boot 整合 elasticsearch 5.x
  16. 实习番外篇:解决C语言使用Makefile无法实现更好的持续集成问题
  17. Error:fatal: Not a git repository (or any of the parent directories): .git
  18. linux 最大文件查找
  19. Selective Search for Object Recognition
  20. .NET 社区汇总

热门文章

  1. 删除rabbitmq中持久化的队列和数据
  2. poi复杂excel的实现
  3. UVA 10479 The Hendrie Sequence
  4. 初学者必看:.NET 中的静态与非静态的异同
  5. System中关于Property的方法
  6. 面向对象 ( OO ) 的程序设计——继承
  7. 基本控件文档-UITextField属性---iOS-Apple苹果官方文档翻译
  8. Laravel 5.4 migrate时报错: Specified key was too long error
  9. cookie、localstroage与sessionstroage的一些优缺点
  10. 深入理解Spring系列之十一:SpringMVC-@RequestBody接收json数据报415