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 相关文章推荐
javascript 获取网页参数系统
Jul 19 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
Nov 25 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
javascript学习指南之回调问题
Apr 23 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 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
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
webpack之devtool详解
2018/02/10 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
七年级历史教学反思
2014/02/05 职场文书
采购意向书范本
2014/03/31 职场文书
小学校本培训方案
2014/06/06 职场文书
校园安全标语
2014/06/07 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
十八大宣传标语
2014/10/09 职场文书
个人专业技术总结
2015/03/05 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python