function fn(){
console.log(this); //this指向window
}
fn.call(); //可以直接使用,但无意义
***********************************************************************************
function fn(n,m){
console.log(this); //分别被call和apply调用,所以this指向obj1 或指向obj2
console.log(this.name); //张三 | 李四
this.say();
console.log(n,m); //222 333 | 444 555
}
var obj1 = {
name:"张三",
age:18,
say(){
console.log("我叫"+this.name)
}
}
var obj2 = {
name:"李四",
age:20,
say(){
console.log("年龄"+this.age)
}
}
fn.call(obj1,222,333); //fn中this指向obj1,传两个参数,fn会立即执行
fn.apply(obj2,[444,555]); //fn中this指向obj2,以数组形式传两个参数,fn会立即执行
**********************************************************************************
fn.bind(obj1); //this指向obj1,但不能传值,fn也不会立即执行,fn要执行需要重新调用
call,apply,bind简述
最新推荐文章于 2022-07-27 15:48:12 发布
本文探讨了JavaScript中的函数调用方式,包括fn()、fn.call()和fn.apply(),详细解释了this的指向变化。通过示例展示了在不同调用场景下,this如何指向对象实例,并且演示了参数传递的差异。同时提到了fn.bind()方法,指出其能固定this指向但不会立即执行函数,需重新调用才能运行。
摘要由CSDN通过智能技术生成