深入理解js中this的用法


Posted in Javascript onMay 28, 2016

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。

1、纯粹函数调用。

function test() {  
  this.x = 1;  
  alert(x);
}

test();

其实这里的this就是全局变量。看下面的例子就能很好的理解其实this就是全局对象Global。其实这里的this就是全局变量。看下面的例子就能很好的理解其实this就是全局对象Global。

var x = 1;
function test() {
  alert(this.x);
}
test();//1

var x = 1;
function test() {
  this.x = 0;
}
test();
alert(x);//0

2、作为方法调用,那么this就是指这个上级对象。

function test() {
  alert(this.x);
}

var o = {};
o.x = 1;
o.m = test;
o.m(); //1

3、作为构造函数调用。所谓构造函数,就是生成一个新的对象。这时,这个this就是指这个对象。

function test() {  
   this.x = 1;
}
var o = new test();
alert(o.x);//1

4、apply调用

var x = 0;
function test() {
  alert(this.x);
}

var o = {};
o.x = 1;
o.m = test;
o.m.apply(); //0
o.m.apply(o);//1

当apply没有参数时,表示为全局对象。所以值为0。

以上这篇深入理解js中this的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过jquery实现tab标签浏览效果
Feb 20 Javascript
一些javascript一些题目的解析
Dec 25 Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
详解KOA2如何手写中间件(装饰器模式)
Oct 11 Javascript
TypeScript基础入门教程之三重斜线指令详解
Oct 22 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
微信小程序实现图片翻转效果的实例代码
Sep 20 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 Javascript
关于function类中定义变量this的简单说明
May 28 #Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
May 28 #Javascript
动态更新highcharts数据的实现方法
May 28 #Javascript
不同js异步函数同步的实现方法
May 28 #Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 #Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 #Javascript
jquery取消事件冒泡的三种方法(推荐)
May 28 #Javascript
You might like
php中数据的批量导入(csv文件)
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
详解Python迭代和迭代器
2016/03/28 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
python 二维数组90度旋转的方法
2019/01/28 Python
关于Python作用域自学总结
2019/06/10 Python
Python的collections模块真的很好用
2021/03/01 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
中学生自我鉴定
2014/02/04 职场文书
合作意向书模板
2014/03/31 职场文书
法人代表任命书范本
2014/06/05 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书