一句话介绍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,那么实际上在调用时这些值都会被忽略,所以使用的是默认绑定规则
网友评论