- 浏览: 498991 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
JavaScript中的this
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
this指向函数执行时的当前对象,值得注意,该关键字在Javascript中和执行环境,而非声明环境有关。
情况一:纯粹的函数调用
属于全局性调用,因此this就代表全局对象Global(浏览器中就是window对象)
运行结果是1。
因为直接调用,所以this是对象Global
情况二:作为对象方法的调用
函数还可以作为某个对象的方法调用,这时this就指这个上级对象。
运行结果是1。
因为是o这个对象调用,所以this是对象是o
情况三:作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
运行结果是1。
构造函数调用,新建时this是新建的对象
情况四:apply调用
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的
调用这个函数的对象。因此,this指的就是这第一个参数。
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。
如果把最后一行代码修改为
o.m.apply(o); //1
运行结果就变成了1,证明了这时this代表的是对象o。
javascript有一个设计缺陷,使得的this绑定混乱
解决方法约定用that代替this
this指向函数执行时的当前对象,值得注意,该关键字在Javascript中和执行环境,而非声明环境有关。
举个例子来说明这个问题:
this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName
函数的当前对象,即other,故最后alert出来的是other.name。
原文参考:http://www.cnblogs.com/greenteaone/p/4193985.html
原文参考:http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
原文参考:http://www.cnblogs.com/justany/archive/2012/11/01/the_keyword_this_in_javascript.html
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
this指向函数执行时的当前对象,值得注意,该关键字在Javascript中和执行环境,而非声明环境有关。
情况一:纯粹的函数调用
属于全局性调用,因此this就代表全局对象Global(浏览器中就是window对象)
function test(){ this.x = 1; alert(this.x); } test(); // 1
运行结果是1。
因为直接调用,所以this是对象Global
情况二:作为对象方法的调用
函数还可以作为某个对象的方法调用,这时this就指这个上级对象。
function test(){ alert(this.x); } var o = {}; o.x = 1; o.m = test; o.m(); // 1
运行结果是1。
因为是o这个对象调用,所以this是对象是o
情况三:作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
function test(){ this.x = 1; } var o = new test(); alert(o.x); // 1
运行结果是1。
构造函数调用,新建时this是新建的对象
情况四: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。
javascript有一个设计缺陷,使得的this绑定混乱
var subway={ name:'1号线', speed:0, run:function(speed){ this.speed=speed; //绑定到对象本身 function test(speed){ this.speed=speed+50;//竟然绑定到全局变量了,真是匪夷所思啊 } test(speed); } }; subway.run(100); console.log(subway.speed);//100 console.log(speed);//150
解决方法约定用that代替this
var subway={ name:'1号线', speed:0, run:function(speed){ var that=this; //用that代替this this.speed=speed; function test(speed){ that.speed=speed+50; } test(speed); } }; subway.run(100); console.log(subway.speed);//150
this指向函数执行时的当前对象,值得注意,该关键字在Javascript中和执行环境,而非声明环境有关。
举个例子来说明这个问题:
var someone = { name: "Bob", showName: function(){ alert(this.name); } }; var other = { name: "Tom", showName: someone.showName } other.showName(); //Tom
this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName
函数的当前对象,即other,故最后alert出来的是other.name。
原文参考:http://www.cnblogs.com/greenteaone/p/4193985.html
原文参考:http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
原文参考:http://www.cnblogs.com/justany/archive/2012/11/01/the_keyword_this_in_javascript.html
发表评论
-
定时调用函数功能实现
2021-06-11 10:26 1107<html> <head> & ... -
uniApiJs
2021-06-08 18:04 0//获取当前的地理位置、速度 function getLoca ... -
百度人脸识别
2021-05-21 16:11 366package com.gaojinsoft.htwy.y20 ... -
点击DIV触发上传文件的方法
2021-05-20 14:11 1207<div Style="float:left ... -
前端格式化工具与检测工具选择与使用
2021-05-10 20:26 732//工具安装前的准备与 ... -
indexedDb TEST
2021-03-24 08:36 512<!DOCTYPE html> <html& ... -
defineProperty Array push 监听
2020-10-31 15:16 466<!DOCTYPE html> <html ... -
weuiJsLayer.js
2020-07-24 09:56 274var weuiJsAlterMap = {}; f ... -
dataViewCommonJs
2020-05-09 17:00 360// var _elementIdToDataMap={} ... -
editorconfig配置
2020-03-28 20:36 469# https://editorconfig.org root ... -
commonJs
2020-03-26 21:25 365//本包使用需要先引入jquery //获取数组中的重复元素 ... -
setFormData
2019-12-20 22:30 0function setFormData(selector,d ... -
高德地图获取地址
2019-09-11 14:42 510高德帐号 135704744 <!doctype ... -
前端实现从剪贴板中获取数据
2019-05-16 14:01 1477//绑定在了body上,也可以绑定在其他可用元素行,但是不是所 ... -
js prototype原理与使用
2018-08-14 15:59 775js prototype原理与使用 prototype 使您 ... -
JS过滤树数据
2018-07-02 16:45 1025<!DOCTYPE html> <html ... -
javascript匿名函数与闭包
2016-09-27 14:10 432javascript匿名函数与闭包 ... -
JavaScript 作用域和作用域链
2016-09-27 09:08 523JavaScript 作用域和作用域链 JavaScrip ... -
Javascript函数
2016-09-28 15:00 504Javascript函数 定义函数 使用function关 ... -
Javascript执行步骤与顺序
2016-09-26 01:09 416Javascript执行步骤与顺序 1.JavaScript ...
相关推荐
在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...
JavaScript中this的指向还没搞明白?来这看看 你就懂啦~
### JavaScript中this指向详解 #### 一、引言 在JavaScript编程中,`this`关键字的使用及其指向问题一直是困扰很多开发者的难点之一。不同于传统面向对象编程语言如Java或C#中的`this`概念,JavaScript中的`this`...
探寻JavaScript中this指针指向 JavaScript中的this指针指向是一个复杂的问题,需要深入了解JavaScript的函数调用机制和对象模型。这篇文章将深入探讨this指针指向的问题,并提供多个例子来说明this指针指向的规律。...
复习JavaScript中this指向及绑定
浅谈javascript中this在事件中的应用.doc
JavaScript中的`this`关键字是程序设计中的一个核心概念,它在不同上下文环境中有着不同的指向,这使得理解和掌握`this`的用法至关重要。在JavaScript中,`this`的值取决于函数调用的方式,而不是定义的方式,这为...
### JavaScript 中 `this` 的用法详解 #### 一、引言 在 JavaScript 开发过程中,`this` 关键字的使用常常令开发者感到困惑。这是因为 `this` 的值并不是静态确定的,而是取决于函数调用的方式。了解 `this` 的...
在JavaScript中,`this`关键字是用来引用函数执行上下文中的对象。它的行为有时可能会让初学者感到困惑,但理解其工作原理对于编写高效和可维护的代码至关重要。下面我们将深入探讨`this`的使用和一些常见场景。 1....
这种特性使得this在JavaScript中具有了多重含义,对于初学者来说,确实是一个令人困惑的概念。 首先,需要明确的是,在JavaScript中,this关键字的指向不是在编译期确定的,而是在运行期确定的。这与大多数主流的...
在JavaScript编程中,`this`关键字是一个至关重要的概念,它表示当前上下文中的对象引用。在不同的场景下,`this`的指向会有所不同,这往往让开发者感到困惑。以下是关于`this`指向问题的详细解释: 一、普通函数...
JavaScript中的this关键字是一个非常重要的概念,它在函数执行时确定了函数的执行上下文。在其他编程语言中,函数的调用上下文可能是明确的,但在JavaScript中,this的指向却可能因为多种不同的规则而变化,从而导致...
在JavaScript中,`this`关键字的作用域是一个经常让人困惑的主题,尤其对于那些习惯于其他面向对象语言(如Java或C++)的开发者来说。在这些语言中,`this`通常固定地指向当前对象实例。然而,在JavaScript中,`this...
在JavaScript中,`this`关键字是一个非常重要的概念,它指的是当前执行上下文中的对象。`this`的值取决于函数的调用方式,而不是定义方式。下面我们将详细探讨在不同场景下`this`的用法。 1. **全局作用域中调用...
对大多数有OOP开发经验的开发人员来说this是当前作用域中引用普通元素的标识符,但是在Javascript中它却显得古灵精怪的,因为它不是固定不变的,而是随着它的执行环境的改变而改变。在Javascript中this总是指向调用...
在JavaScript开发中,使用jQuery的$(this)在原生态函数中可能会出现无效的问题,本文将对此进行详细的分析和解决方法的介绍。 一、问题描述 在JavaScript开发中,我们经常使用jQuery来简化我们的代码,但是当我们...
本文实例讲述了javascript中this的用法。分享给大家供大家参考,具体如下: 实践一:this在点击等事件中的指向 html结构: <button id='btn'>click me</button> javascript结构: var btn = document...
首先,让我们了解JavaScript中的this关键字。在JavaScript中,this的指向不像其他一些面向对象的编程语言中那样固定,而是依赖于函数的调用方式。在传统的面向对象语言中,this关键字通常指代当前对象,但在...