构造函数+call+apply+bind
一构造函数
function Fn(){
this.user = "追梦子";
}
var a = new Fn();
console.log(a.user); //this指构造函数的实例
call+apply
b.call(a)—–b.call(a)意思将b添加到a的环境中—b放在a的环境下执行
eg1:call
var a = {
user:"追梦子",
fn:function(){
console.log(this.user); //追梦子
}
}
var b = a.fn;
b.call(a); //若不用call,则b()执行后this指的是Window对象
eg2:call2
var a = {
user:"追梦子",
fn:function(){
console.log(this.user); //追梦子
}
}
var b = a.fn;
b.apply(a);
call和apply的区别
apply第二个参数为数组,可以接受不定参数个数
call只能接受指定个数参数,第二个参数任意类型
bind
var a = {
user:"追梦子",
fn:function(){
console.log(this.user);
}
}
var b = a.fn;
b.bind(a); //代码没有被打印
这就是bind和call、apply方法的不同,实际上bind方法返回的是一个修改过后的函数
bind会以第一个参数作为他的this
总结: call和apply都是改变上下文中的this并立即执行这个函数,bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别