js中apply、call和bind的区别
2018-01-04 15:38
701 查看
1.相同点
(1)都可以用来改变函数的this的指向
(2)使用时第一个参数都是this所指向的对象,并且都可以后续参数传参
2.区别
(1)call跟apply只是参数传参的方式不一样,call以多个参数形式传入,而apply则以数组的形式传入
(2)bind传参的方式可以跟call一样,由于bind返回的是一个函数,因此我们也可以在调用的时候在进行传参
下面看两个例子:
(1)都可以用来改变函数的this的指向
(2)使用时第一个参数都是this所指向的对象,并且都可以后续参数传参
2.区别
(1)call跟apply只是参数传参的方式不一样,call以多个参数形式传入,而apply则以数组的形式传入
(2)bind传参的方式可以跟call一样,由于bind返回的是一个函数,因此我们也可以在调用的时候在进行传参
下面看两个例子:
var func1 = { name : "teal", gender : "男", age : 20, intro: function() { alert(this.name + " , " + this.gender + " ,今年" + this.age); } } var func2 = { name : "小红", gender : "女", age : 18 } //小红 , 女 ,今年18 //func1.intro.call(func2); //func1.intro.apply(func2); //func1.intro.bind(func2)(); var func1 = { name : "teal", gender : "男", age : 24, intro : function(province,city) { alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,住在" + province + "省" + city + "市"); } } var func2 = { name : "小红", gender : "女", age : 18 } // 小红 , 女 ,今年18 ,住在广东省广州市 //func1.intro.call(func2,"广东","广州"); //func1.intro.apply(func2,["广东","广州"]); //func1.intro.bind(func2,"广东","广州")(); //func1.intro.bind(func2)("广东","广州");
相关文章推荐
- js apply/call/caller/callee/bind使用方法与区别分析
- js中的bind、apply、call、callee、caller的区别
- apply, call, bind在js中的区别
- js经验点滴js apply/call/caller/callee/bind使用方法与区别分析
- js apply/call/caller/callee/bind使用方法与区别分析
- js apply/call/caller/callee/bind使用方法与区别分析
- js中call() apply() bind()的用法及三者区别
- js apply/call/caller/callee/bind使用方法与区别分析
- JS中call、apply、bind大概区别
- js中的call()、apply()和bind()方法的区别
- js apply/call/caller/callee/bind使用方法与区别分析
- JS 中的this指向问题和call、apply、bind的区别
- js apply/call/caller/callee/bind使用方法与区别分析
- 关于js中call、apply、bind方法的区别
- js 中call,apply,bind的区别
- js---js中的继承方法call、bind、apply,以及三者之间的区别总结。
- js apply/call/caller/callee/bind使用方法与区别分析
- js中call、apply、bind区别以及个别用例
- js中call()、apply()、bind()方法的区别
- js apply/call/caller/callee/bind使用方法与区别分析