call,apply,bind的用法及区别

Posted wtdall

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了call,apply,bind的用法及区别相关的知识,希望对你有一定的参考价值。

<script>

function test(){
console.log(this)
}
// new test();
//函数调用call方法的时候,就会执行。
//call的参数:第一个参数:方法执行的时候,方法中的this的指向。第二个参数:表示方法执行所需要的实际参数。
var obj ={ name:"zhagafd"};
// test.call(obj,"hello");
//applly的参数:第一个参数:方法执行的时候,方法中this的指向。第二个参数:方法执行的时候,所有形参的一个数组[];
test.apply(obj,["hello"]);
//bind方法的特点:绑定方法执行时的this,并没有马上执行,而是返回一个方法对象
//bind方法传实际参数的方法与call一致
var foo = test.bind(obj,"hello");
foo();
 
//继承
function person(name,age){
this.name = name;
this.age = age;
this.eat = function(){
console.log(‘eating...‘);
}
this.show = function(){
console.log(name+‘‘+age);
}
}
//定义一个student类,继承person
function stundent(name,age,score){
this.score = score;
person.call(this,name,age);
}
//实例化student
var stu = new stundent(‘tom‘,18,88);
stu.eat();
stu.show();
 
//回调函数的this指向指定后,并没有马上去执行,所以当需要指定回调函数的this时,使用bind方法来实现
var obj = {name:"zhangsan"};
setTimeout(function(){
console.log(this);
}.bind(obj),100)
</script>

以上是关于call,apply,bind的用法及区别的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript call,apply,bind用法

JavaScript 中 call()apply()bind() 的用法

Js(Javascript)的apply call 和bind区别

call和apply的区别及用法

关于call和apply函数的区别及用法

call 和 apply 和 bind的区别