深入理解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 相关文章推荐
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
js图片轮播效果实现代码
Apr 18 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
JS动态图片的实现方法完整示例
Jan 13 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Python实现新浪博客备份的方法
2016/04/27 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python3图片文件批量重命名处理
2019/10/31 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
应届生幼儿园求职信
2013/11/12 职场文书
自我推荐书
2013/12/04 职场文书
小学运动会演讲稿
2014/08/25 职场文书
工作作风承诺书
2014/08/30 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers