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 相关文章推荐
JQUERY操作JSON实例代码
Feb 09 Javascript
一些主流JS框架中DOMReady事件的实现小结
Feb 12 Javascript
js自定义方法通过隐藏iframe实现文件下载
Feb 21 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
JS触摸与手势事件详解
May 09 Javascript
vue.js整合mint-ui里的轮播图实例代码
Dec 27 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
jQuery实现日历效果
2020/09/11 jQuery
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
python实现简易通讯录修改版
2018/03/13 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
服装公司总经理岗位职责
2013/11/30 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
外企求职信范文分享
2013/12/31 职场文书
英文导游欢迎词
2014/01/11 职场文书
运动会通讯稿500字
2014/02/20 职场文书
奥利奥广告词
2014/03/20 职场文书
2014年学校工作总结
2014/11/20 职场文书
大学毕业生个人总结
2015/02/28 职场文书
环卫工作个人总结
2015/03/04 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
高中家长意见怎么写
2015/06/03 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis