全网整合营销服务商

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

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

JavaScript中this的用法及this在不同应用场景的作用解析

由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。

JavaScript 中函数的调用有以下几种方式:作为函数调用,作为对象方法调用,作为构造函数调用,和使用 apply 或 call 调用。下面我们将按照调用方式的不同,分别讨论 this 的含义。

情况一:纯粹的函数调用

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

1、函数也可以直接被调用,此时 this 绑定到全局对象。

function makeNoSense(x) { 
  this.x = x; 
} 
makeNoSense(5); 
console.log(x);// x 已经成为一个值为 5 的全局变量
function test(){
  this.x = 1;
  alert(this.x);
}
test(); // 1

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

函数还可以作为某个对象的方法调用,这时this指代对象内部属性被调用。

var myObject = {
  value :0,
  increment:function (inc){
    this.value += typeof inc ==='number' ? inc:1;
  }
};
myObject.increment();
console.log(myObject.value); //1
myObject.increment(2);
console.log(myObject.value); //3

情况三 :作为构造函数调用

javaScript 支持面向对象式编程,与主流的面向对象式编程语言不同,JavaScript 并没有类(class)的概念,而是使用基于原型(prototype)的继承方式。

相应的,JavaScript 中的构造函数也很特殊,如果不使用 new 调用,则和普通函数一样。作为又一项约定俗成的准则,构造函数以大写字母开头,提醒调用者使用正确的方式调用。如果调用正确,this 绑定到新创建的对象上。

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

function Point(x, y){ 
  this.x = x; 
  this.y = y; 
 }
var p1 = new Point(3,2);
console.log(p1.x+","+p1.y);//3,2

为了表明这时this不是全局对象,我对代码做一些改变:

var x = 4;
function Point(x, y){ 
  this.x = x; 
  this.y = y; 
 }
var p1 = new Point(3,2);
console.log(p1.x+","+p1.y);//3,2

情况四: apply或call调用

让我们再一次重申,在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。很多 JavaScript 中的技巧以及类库都用到了该方法。让我们看一个具体的例子:

function Point(x, y){ 
  this.x = x; 
  this.y = y; 
  this.moveTo = function(x, y){ 
    this.x = x; 
    this.y = y; 
    console.log(this.x+","+this.y);
  } 
} 
var p1 = new Point(0, 0); 
var p2 = {x: 0, y: 0}; 
p1.moveTo(1, 1); //1,1
p1.moveTo.apply(p2, [10, 10]);//10,10

在上面的例子中,我们使用构造函数生成了一个对象 p1,该对象同时具有 moveTo 方法;使用对象字面量创建了另一个对象 p2,我们看到使用 apply 可以将 p1 的方法应用到 p2 上,这时候 this 也被绑定到对象 p2 上。另一个方法 call 也具备同样功能,不同的是最后的参数不是作为一个数组统一传入,而是分开传入的。本文通过对JavaScript中经常容易混淆的this在四中应用场景中的使用方法进行了讲解,希望对您有所帮助,喜欢的话,请推荐一下哦。

以上所述是小编给大家介绍的JavaScript中this的用法及this在不同应用场景的作用解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# javascript  # this  # 用法  # javascript中this的四种用法  # JS函数this的用法实例分析  # js中this的用法实例分析  # javascript中的self和this用法小结  # javascript中onclick(this)用法介绍  # javascript this用法小结  # 绑定  # 让我们  # 小编  # 面向对象  # 的是  # 这是  # 还可以  # 在此  # 约定俗成  # 我对  # 这两个  # 也很  # 得多  # 给大家  # 可以直接  # 几种  # 作为一个  # 它可以  # 成为一个  # 在上面 


相关文章: 建站之星安全性能如何?防护体系能否抵御黑客入侵?  开封网站制作公司,网络用语开封是什么意思?  建站主机选虚拟主机还是云服务器更好?  如何设置并定期更换建站之星安全管理员密码?  如何用IIS7快速搭建并优化网站站点?  建站之星后台密码遗忘或太弱?如何重置与强化?  建站之星安装步骤有哪些常见问题?  网站专业制作公司有哪些,做一个公司网站要多少钱?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何快速完成中国万网建站详细流程?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  建站之星安装路径如何正确选择及配置?  如何破解联通资金短缺导致的基站建设难题?  如何选择高效便捷的WAP商城建站系统?  Python lxml的etree和ElementTree有什么区别  网站制作网站,深圳做网站哪家比较好?  如何彻底删除建站之星生成的Banner?  定制建站哪家更专业可靠?推荐榜单揭晓  深圳网站制作案例,网页的相关名词有哪些?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何自定义建站之星模板颜色并下载新样式?  盘锦网站制作公司,盘锦大洼有多少5G网站?  ,网站推广常用方法?  建站之星价格显示格式升级,你的预算足够吗?  在线制作视频的网站有哪些,电脑如何制作视频短片?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  实例解析angularjs的filter过滤器  如何使用Golang安装API文档生成工具_快速生成接口文档  微信h5制作网站有哪些,免费微信H5页面制作工具?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  设计网站制作公司有哪些,制作网页教程?  股票网站制作软件,网上股票怎么开户?  学校建站服务器如何选型才能满足性能需求?  如何选择香港主机高效搭建外贸独立站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  一键网站制作软件,义乌购一件代发流程?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  建站之星备案流程有哪些注意事项?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  ,有什么在线背英语单词效率比较高的网站?  如何确保西部建站助手FTP传输的安全性?  如何在宝塔面板创建新站点?  如何在Tomcat中配置并部署网站项目?  建站主机如何安装配置?新手必看操作指南  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何在搬瓦工VPS快速搭建网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  建站VPS配置与SEO优化指南:关键词排名提升策略  seo网站制作优化,网站SEO优化步骤有哪些? 

您的项目需求

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