call
call():第一参数 为改变this指向的对象,后面正常接受其他的参数。

1
2
3
4
5
6
7
8
9
10
11
12
var user1 = { name: "hello", age: 18, fun: function(){ console.log(this.name,this.age); } }; var user2 = { name: "js", age: 20, fun: function(){ console.log(this.name,this.age); } }; user1.fun.call(user2); user2.fun.call(user1); 输出:js 20;hello 18

apply
apply():接受两个参数,第一个参数为改变this指向的对象,第二个参数为数组。

1
2
3
4
5
6
7
8
9
var user1 = { name: "hello", age: 18, fun: function(a,b,c){ console.log(this.name,this.age); console.log(a,b,c); } }; var user2 = { name: "js", age: 20, }; user1.fun.apply(user2,[1,2,3]);

bind
bind()和call()差不多,不过bind()返回的是一个函数,需要手动调用一下。

1
2
3
4
5
6
7
8
9
10
11
12
var user1 = { name: "hello", age: 18, fun: function(){ console.log(this.name,this.age); } }; var user2 = { name: "js", age: 20, fun: function(){ console.log(this.name,this.age); } }; user1.fun.bind(user2)(); user2.fun.bind(user1)(); 输出:js 20;hello 18

————————————————
版权声明:本文为CSDN博主「半点寒12W」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bdh123b/article/details/121734813

发表评论