面试:JavaScript 中 call()、apply()、bind()用法以及区别

it2026-08-12  12

面试: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; // 18 obj.myFun() // kukudehu年龄 undefined

例二:

var fav='zzh'; function shows(){ console.log(this.fav) }

结果:

shows() //zzh

通过两个例子可以看出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);    // 德玛年龄 99 obj.myFun.apply(db);    // 德玛年龄 99 obj.myFun.bind(db)();   // 德玛年龄 99

注:bind方法后面有一对空格,所以得出结论bind返回的是一个函数必须调用才会执行。

如果对您有用请点亮,欢迎大家提出质疑疑问。kukudehu!

最新回复(0)