js中的this

来源:互联网 发布:.net域名代表什么 编辑:程序博客网 时间:2024/06/08 07:26
this的知识是js中比较重要的一环。不过总的来说,抓住根本,就会发现this得知识就会清晰明了。
this的本质是,首先this代表的是当前对象,一般在函数中使用,如果在全局使用就是window,如果在函数中使用,我们只要记住他核心的一点就行,那就是,哪个对象调用了这个函数,那么这个函数中this就是那个对象。不管这个函数被传了多少次,到达什么地方。
this的用法大概有几种。
第一种比较常用的就是对象里的,比如
var meizi = {
name: 'zym',
showName: function() {
console.log(this.name)
}
}
meizi.showName()//zym


第二种就是在setTimeout,事件处理或者ajax回调里使用this时,这种情况比较难一点。因为this会丢失,比如
setTimeout(meizi.showName,1000);//undefined
这种情况看起来以为会输出zym,比较我们是用meizi去调用的这个函数的,这里可以理解为meizi.showName是一个单纯的函数指针,到1秒后js引擎会执行这个指针指向的函数,而不会附带任何的数据信息,对于这种情况,解决方案有两种。
一种是bind,meizi.showName.bind(meizi),另一种是用另一个函数包装一下,function(){meizi.showName();}。


对于this的运用,学会结合bind,apply和call的使用时很重要的。bind和后两者的区别就是bind是绑定了相关的this和参数后返回一个新函数,而后两者是不仅绑定this和相关的参数,而且还会执行这个函数。可以理解为bind是延迟执行。
0 0