全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Javascript的this用法

this是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,

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

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

下面分四种情况,详细讨论this的用法。

情况一:纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。

请看下面这段代码,它的运行结果是1。

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

为了证明this就是全局对象,我对代码做一些改变:

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

运行结果还是1。再变一下:

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

情况二:作为对象方法的调用

函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

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

情况三 作为构造函数调用

所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

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

运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:

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

运行结果为2,表明全局变量x的值根本没变。

情况四 apply调用

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

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

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

如果把最后一行代码修改为

  o.m.apply(o); //1

运行结果就变成了1,证明了这时this代表的是对象o。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # this  # JavaScript中this的用法实例分析  # JS作用域闭包、预解释和this关键字综合实例解析  # JavaScript中this的四个绑定规则总结  # 几句话带你理解JS中的this、闭包、原型链  # javascript this详细介绍  # JavaScript中的this使用详解  # 老生常谈 js中this的指向  # js老生常谈之this  # constructor  # prototype全面解析  # JS中改变this指向的方法(call和apply、bind)  # 深入理解javascript中的 “this”  # 第一个  # 我对  # 指的是  # 的是  # 这是  # 还可以  # 这段  # 四种  # 自动生成  # 为空  # 没变  # 有一个  # 变成了  # 那就是  # 全局变量  # 结果是  # 只能在  # 证明了  # Javascript  # function 


相关文章: 深圳网站制作培训,深圳哪些招聘网站比较好?  如何高效完成独享虚拟主机建站?  如何用wdcp快速搭建高效网站?  中山网站制作网页,中山新生登记系统登记流程?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  零服务器AI建站解决方案:快速部署与云端平台低成本实践  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  网页设计网站制作软件,microsoft office哪个可以创建网页?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  建站之星导航菜单设置与功能模块配置全攻略  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  再谈Python中的字符串与字符编码(推荐)  高防服务器:AI智能防御DDoS攻击与数据安全保障  建站之星安装模板失败:服务器环境不兼容?  制作网站外包平台,自动化接单网站有哪些?  威客平台建站流程解析:高效搭建教程与设计优化方案  北京的网站制作公司有哪些,哪个视频网站最好?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何快速生成橙子建站落地页链接?  孙琪峥织梦建站教程如何优化数据库安全?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何选择网络建站服务器?高效建站必看指南  如何用PHP快速搭建高效网站?分步指南  建站之星后台管理如何实现高效配置?  大连网站设计制作招聘信息,大连投诉网站有哪些?  制作旅游网站html,怎样注册旅游网站?  如何通过NAT技术实现内网高效建站?  Thinkphp 中 distinct 的用法解析  制作网页的网站有哪些,电脑上怎么做网页?  建站之星如何实现网站加密操作?  制作网站的模板软件,网站怎么建设?  网站制作免费,什么网站能看正片电影?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  建站之星导航如何优化提升用户体验?  如何通过免费商城建站系统源码自定义网站主题与功能?  建站之家VIP精选网站模板与SEO优化教程整合指南  实现虚拟支付需哪些建站技术支撑?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何在云服务器上快速搭建个人网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  ,网页ppt怎么弄成自己的ppt?  如何选择PHP开源工具快速搭建网站?  TestNG的testng.xml配置文件怎么写  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站之星免费版是否永久可用?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。