this指向问题(2)
2018-06-24 01:12:33来源:未知 阅读 ()
4、显示绑定
指的是apply、bind、call
(1)、apply 和 call
相同点: <1> 这两个方法的用途是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值,真正强大之处在于扩充函数赖以运行的作用域
<2> 它们接收的第一个参数都是一样的:函数运行的作用域
function foo(b,c){ console.log(this.a,b,c); } var obj = { a:2,b:3} foo.call(obj,5,6) // 2 5 6
apply接受的参数是数组或者 arguments
function foo(something){ console.log(this.a,something); // 2 3 return this.a + something } var obj = { a:2} var bar =function(){ return foo.apply(obj,arguments); } var b = bar(3) console.log(b) // 5
apply 还有一个作用是把数组展开
function f(x,y,z){ console.log(x,y,z); // 1,2,3 } var a = [1,2,3] f.apply(null,a)
这个是ES5中的写法,在 ES6 中已经抛弃了这种写法,ES6 的写法为:
function f(x,y,z){ console.log(x,y,z); // 1,2,3 } var a = [1,2,3] f(...a)
(2)bind
function foo(something){ console.log(this.a,something); // 2 5 return this.a + something } var obj = { a:2} var bar = foo.bind(obj,5) // 这个东西是函数 foo var b = bar(3) console.log(b); // 7
5、优先级问题
new > 显示绑定 > 隐式绑定 > 默认
call、apply、bind其实不止用于指定this,还有很多的用途。在这因为是讲 this 所以就不谈那些,后续我会继续写一些 this 的机制,以及前人是怎么替代 this 机制的。嗯.....
因为刚开始写东西,所以可能有些东西表达的不是很清楚,可能有些东西看起来有点绕,如果有什么不懂得或者有问题的欢迎留言指正
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:前端学数据结构之集合
下一篇:JQ选择器
- 浅析XMLHttpRequest的缓存问题 2020-02-25
- 火狐下input焦点无法重复获取问题的解决方法 2019-12-02
- Chrome Form多次提交表单问题的解决方法 2019-11-04
- Javascript 多浏览器兼容性问题及解决方案 2019-09-30
- IE DOM实现存在的部分问题及解决方法 2019-08-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash