call,apply,bind 指定this

一句话介绍call:使用一个指定的this和若干个指定的参数调用某个函数或方法。

在讲解call显示绑定之前,我们先想一下call做了哪些事儿。

  • 将函数设为对象的属性
  • 指定函数的this,并进行传参
  • 执行&删除函数
  • 判定如果没有指定要绑定的this,非严格模式下默认指向全局对象
    可以看到值调用call方法后,会将this绑定到指定对象,所以称为显示绑定
  console.log(this.name);
}

var obj = {
  name: 'Heternally',
}

var obj1 = {
  name: 'Heternally1'
}

var name = 'zl';

foo.call(obj); // Heternally  调用call方法后强行将foo函数的this指向来obj对象上

foo.call(obj).call(obj1); // Heternally  多次调用call方法,以第一次为准

foo.call(obj1).call(obj); // Heternally1

foo.call();// zl 没有传入指定对象,所以this默认指向全局对象

如果call、apple、bind的绑定对象是null或者undefined,那么实际上在调用时这些值都会被忽略,所以使用的是默认绑定规则

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容