一段代码清晰说明js中的this
2017-01-26 11:56
344 查看
今天看公司的项目代码,突然问我说遇到如下代码,让我帮解释原因
![](http://s3.51cto.com/wyfs02/M00/8D/1E/wKioL1iJdMGhybI_AABWMw2l2rw905.jpg-wh_500x0-wm_3-wmp_4-s_2330073655.jpg)
原因是js的this是动态决定的,和你调用方式有直接关系。
简单说如果你调用一个函数的时候使用“对象.函数名”的方式,那么this就是这个.(点)之前的对象,否则是window。
比如你在调用object.getNameFunc()的时候getNameFunc函数体中的this是刚声明的object。如果你写成
var func = object.getNameFunc;
func();
这时候getNameFunc函数体中的this是window,虽然是同一函数调用方式的不同决定了this的不同。
同样的道理,object.getNameFunc()返回的是一个函数引用,加一个括号就是让函数执行。其实相当于如下代码
var func = object.getNameFunc();
alert( func() );
函数前没有“对象”这种形式,所以执行函数时候this是window,结果就很明显了。
![](http://s3.51cto.com/wyfs02/M00/8D/1E/wKioL1iJdMGhybI_AABWMw2l2rw905.jpg-wh_500x0-wm_3-wmp_4-s_2330073655.jpg)
原因是js的this是动态决定的,和你调用方式有直接关系。
简单说如果你调用一个函数的时候使用“对象.函数名”的方式,那么this就是这个.(点)之前的对象,否则是window。
比如你在调用object.getNameFunc()的时候getNameFunc函数体中的this是刚声明的object。如果你写成
var func = object.getNameFunc;
func();
这时候getNameFunc函数体中的this是window,虽然是同一函数调用方式的不同决定了this的不同。
同样的道理,object.getNameFunc()返回的是一个函数引用,加一个括号就是让函数执行。其实相当于如下代码
var func = object.getNameFunc();
alert( func() );
函数前没有“对象”这种形式,所以执行函数时候this是window,结果就很明显了。
相关文章推荐
- 通过一段代码简单说js中的this的使用
- CSS实现鼠标滑过文字弹出一段说明文字无JS代码
- 通过一段代码简单说js中的this
- 通过一段代码简单说js中的this的使用
- 一段生成treeview的js代码
- 一段用js实现的下拉列表代码。。
- 一段几乎可以让你死机的JS代码
- 一段几乎可以让你死机的JS代码
- 一段动态滚动公告栏的js代码
- 一段按页自动滚动文字或图片的Js代码
- 一段非常简单的让图片自动切换js代码
- 一段js代码模仿实现sina广告条--转自griefforyou的程序人生
- 想用JS写一段鼠标拖拽调整图片大小的代码(未完)
- 按比例微缩图片的一段小小的JS代码
- 用于返回本周的开始日期及结束日期一段JS代码
- 一段js小代码,计算距春节还有多少天
- 一段js表格排序代码
- 按比例微缩图片的一段小小的JS代码
- 按比例微缩图片的一段小小的JS代码
- Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口