面试:JavaScript 中 call()、apply()、bind()用法以及区别
例一:
var name
= 'ldh',age
=18;
var obj
= {
name
: 'kukudehu',
objAge
:this.age
,
myFun
:function(){
console
.log( this.name
+'年龄'+this.age
);
}
}
结果:
obj
.objAge
;
obj
.myFun()
例二:
var fav
='zzh';
function shows(){
console
.log(this.fav
)
}
结果:
shows()
通过两个例子可以看出this指向的位置是不同的,例一this指向obj,例二this指向的是window;
1、有了上面的两个例子我们接下来看一下call()、apply()、bind()是怎么定义this的
如:
var name
= '嘉文',age
=31;
var obj
= {
name
:'赵信',
objAge
:this.age
,
myFun
:function(){
console
.log(this.name
+"年龄"+this.age
);
}
}
var db
={
name
:'德玛',
age
:99
}
结果:
obj
.myFun
.call(db
);
obj
.myFun
.apply(db
);
obj
.myFun
.bind(db
)();
注:bind方法后面有一对空格,所以得出结论bind返回的是一个函数必须调用才会执行。
如果对您有用请点亮,欢迎大家提出质疑疑问。kukudehu!