JavaScript中this的用法实例分析


Posted in Javascript onDecember 19, 2016

本文实例分析了JavaScript中this的用法。分享给大家供大家参考,具体如下:

一."this"公理

this关键字永远都指向函数(方法)的所有者;

function fn1(){
  this
};
fn1(); //this=>window
oDiv.onclick=fn1; //this=>oDiv
oDiv.onclick=function(){
  this //this=>oDiv
  fn1(); //this=>window
}
<div onclick="this.fn1();"></div> //这种行间脚本的写法现在非常罕见

这里的this指向div,fn1()里的this指向window

var it=
{
  info:["腾讯","搜狐","新浪","百度"],
  getinfo:function()
  {
    alert(this.info.join(","));
  }
};
it.getinfo();

输出:腾讯,搜狐,新浪,百度

二.函数赋值给变量时的"this"问题

var it=
{
  info:["腾讯","搜狐","新浪","百度"],
  getinfo:function()
  {
    alert(this.info.join(","));
  }
};
var data=it.getinfo;
data();

输出:报错,TypeError: this.info is undefined

代码相当于

var data=function(){
  alert(this.info.join(","));
};
data();

这里的this指向window,这里的data是被赋值,如果是var data=it.getinfo();那就是调用,结果还是腾讯,搜狐,新浪,百度。如果alert(this.it.info.join(","));结果还是腾讯,搜狐,新浪,百度。

var info=["QQ","sohu","sina","baidu"]
var it=
{
  info:["腾讯","搜狐","新浪","百度"],
  getinfo:function()
  {
    alert(this.info.join(","));
  }
};
var data=it.getinfo;
data();

输出:QQ,sohu,sina,baidu

三.作为对象方法调用时的"this"问题

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

输出:1

四.作为构造函数调用时的"this"问题

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

输出:1

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

输出:1,2

五.闭包中的"this"指向问题

var it=
{
  info:["腾讯","搜狐","新浪","百度"],
  getinfo:function()
  {
  function abc(){
    alert(this.info.join(","));
  }
  abc();
  }
};
it.getinfo();

输出:报错,TypeError: this.info is undefined

闭包中的this不能指向it

解决方法

var it=
{
  info:["腾讯","搜狐","新浪","百度"],
  getinfo:function()
  {
  var _this=this;
  function abc(){
      alert(_this.info.join(","));
  }
  abc();
  }
};
it.getinfo();

优点:无论外部函数名字(it)怎么变,都能指向info

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
ExtJS 入门
Oct 29 Javascript
关于onchange事件在IE和FF下的表现及解决方法
Mar 08 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
微信小程序下拉刷新界面的实现
Sep 28 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 Javascript
JavaScript实现图片放大镜效果
Jun 27 Javascript
关于Javascript闭包与应用的详解
Apr 22 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 #Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 #Javascript
快速入门Vue
Dec 19 #Javascript
javascript中call,apply,bind函数用法示例
Dec 19 #Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 #Javascript
15个非常实用的JavaScript代码片段
Dec 18 #Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 #Javascript
You might like
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
php微信开发之图片回复功能
2018/06/14 PHP
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
应届大学生的推荐信
2013/11/20 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
初婚未育证明样本
2014/10/24 职场文书
教师先进个人材料
2014/12/17 职场文书
检讨书范文
2015/01/27 职场文书
财务部岗位职责
2015/02/03 职场文书
办公用品质量保证书
2015/05/11 职场文书
2016年教师节感言
2015/12/09 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript