【call,apply,bind的用法及区别】最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述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>
推荐阅读
- uni-app自定义app端的扫码界面
- Android studio常用快捷键
- AndroidStudio中如何搭建码云
- Internet History,Technology,and Security-Technology: Application Protocols(Week7)
- 使用VSCode创建简单的Razor Webapp--1.入门
- 使用VSCode创建简单的Razor Webapp--2.添加模型
- 1287. Element Appearing More Than 25% In Sorted Array
- fiddler抓取app的https的包
- 《CSAPP》实验二(二进制炸弹)