`

8 this是什么

阅读更多

this在javascript中 情况是不同与java  c++, 

 

谁调用了  this对象所在的函数,  this就指向谁

 

this引用的对象被 称为函数的 上下文  ,它不是由如何声明函数,而是由如何调用函数决定的.

 

根据函数如何被调用,同一个函数可以拥有不同的上下文

 

		<script type="text/javascript">	
		//this是什么
		var o1={handle:'o1'};								
		var o2={handle:'o2'};								
		var o3={handle:'o3'};			
		window.handle='window';
		
		function whoAmI(){
			return this.handle;			
		}	
			
		o1.identifyMe =whoAmI;		
		
		alert(whoAmI());  //结果  window
		alert(o1.identifyMe()); //结果o1
		alert(whoAmI.call(o2)); //结果o2
		alert(whoAmI.apply(o3)); //结果o3
		</script>	

 

--------------------------------------------------------------------------

 

顶层函数是window对象的属性(方法) , 下面的test8(),就是顶层函数

 

<script type="text/javascript"> 
	function test8()
	{
		alert(this==window)					
	}
	test8();



</script>

 

上面代码执行结果为 true,  test8函数被包含在一个名为window的全局对象中,test8函数是window对象的一个方法.所以this 指向window全局对象

 

----------------------------------------------------

 

<script type="text/javascript"> 
	function test8()
	{
		alert(this==window)					
	}



</script>

<input type="button" value="test 8"  id="bu4" onclick="test8()" /><br/>

 

上面代码执行结果为 true  ,this是window对象

 

---------------------------------------------------

 

<script type="text/javascript">	
	function test8()
	{
		alert(arguments[0].id)					
	}			
</script>
<input type="button" value="test 8"  id="bu4" onclick="test8(this)" class="cla"/>

 

上面代码执行结果为bu4, 这里的this是  button对象

-------------------------------------------------------

 

		<input type="button" value="test" id="bu5"/><br/>
		<script type="text/javascript">	
			function test11()
			{
				var obj=document.getElementById('bu5');
				obj.onclick=function(){
					alert(this.id)
				}				
			}
			test11()			
		</script>

 

上面代码执行结果为bu5 , 这里的this是  button对象 ,因为obj.onclick=function(){}  ,是为button注册了个匿名函数 ,这个匿名函数 是obj对象(button)的 函数.

 

------------------------------------------------------- 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    WIN8仙三补丁(遇到this program has been damaged用)

    《关于在Windows 8系统上修复“this program has been damaged”错误的仙剑三游戏补丁详解》 在享受电子游戏带来的乐趣时,有时我们可能会遇到一些技术问题,特别是对于那些较老的游戏,如经典的《仙剑奇侠传三》在...

    C++中this指针的用法

    #### 8. `this`指针与多线程环境 在多线程环境中,`this`指针的使用可以帮助区分不同的对象实例。例如,在线程回调函数中,通过传递`this`指针,可以确保每个线程正确地操作属于自己的对象实例。 总结来说,`this`...

    PSP使用GPS导航自制软件MapThis v0.5.20

    8. 兼容性:MapThis应能兼容多种型号的PSP设备,以及不同地区的GPS接收器。不过,用户在使用前需要确保软件与硬件的兼容性。 9. 能耗考虑:PSP电池续航有限,使用GPS导航会消耗更多电量。用户在使用MapThis时,需...

    解决redhat 8.2 yum报错 This system is

    在Red Hat 8.2操作系统中,用户可能会遇到一个常见的问题,即在尝试使用`yum`命令安装软件时,系统返回错误提示"This system is not registered to Red Hat Subscription Management"。这个错误表明你的系统未注册到...

    java this方法的使用

    在Java 8之后,可以通过`this`来调用默认构造器,结合`record`关键字创建不可变的数据类: ```java record Person(String name, int age) { public Person { this(name, age, "Unknown"); // 调用带有三个参数...

    This application requires Visual Studio 2013 Redistributable.

    MySql5.7.20安装过程中报错 This application requires Visual Studio 2013 Redistributable. Please install the Redistributable then run this installer again. 的解决办法.报错如下: 1: Action 10:59:21: ...

    java中带有this关键字的程序内存分析

    在Java 8及之后的版本,这部分功能被移至元空间(Metaspace)。 当我们使用`this`关键字时,实际上是在堆内存中查找对应的实例变量。例如,当我们在`display`方法中调用`this.firstName`时,JVM会在当前对象的堆...

    This PC Tweaker.zip

    8. **使用方法**:使用This PC Tweaker时,用户通常需要按照工具提供的向导或设置界面进行操作,选择要优化的项目,然后应用更改。在进行任何系统优化前,最好备份重要数据,以防不测。 9. **维护与更新**:为了...

    Listen to this2文本

    - **节目开场**:节目于晚上8点正式开始,但Jason会在8:02才抵达,由主持人Terry Donovan在其进入前进行简短的介绍。 - **录制细节**:描述了Jason从到达工作室到被引入座位的全过程,以及主持人与嘉宾之间的互动...

    深入学习this指针

    8. `this`指针的注意事项 - `this`在静态成员函数中是无效的,因为静态成员函数与特定对象无关。 - `this`在构造函数的初始化列表中是未定义的,因为它在对象完全构造之前就已经存在,此时成员变量还没有被初始化...

    Visualize This

    8. 大数据与可视化的结合:大数据时代对数据可视化提出了新的挑战,包括处理大规模数据集、实时数据流的可视化,以及如何有效表达复杂数据的关系。《Visualize This》可能会讨论在大数据环境下进行有效可视化的策略...

    editthiscookie

    8. **适用场景**:EditThisCookie适用于各种场合,包括但不限于Web开发、用户体验测试、隐私保护以及排查网页功能异常。它可以帮助用户更好地理解网页的工作机制,同时为用户提供对自身数据的控制权。 9. **注意...

    原创:this指针探秘

    【this指针探秘】 在C++编程语言中,`this`指针是一个非常关键的概念,它是每个非静态成员函数的隐含参数。这个指针指向调用成员函数的对象自身,使得成员函数能够访问和操作对象的数据成员。本文将深入探讨`this`...

    EditThisCookie

    8. **快速搜索**:内置的搜索功能让你能快速找到特定的Cookie,尤其在处理众多Cookie时非常实用。 9. **与开发者工具集成**:EditThisCookie还能与Chrome的开发者工具无缝集成,方便你在调试时快速查看和修改Cookie...

    数据池连接Name jdbc is not bound in this Context解决方案

    在这个问题中,开发者遇到了一个常见的错误:“Name jdbc is not bound in this Context”,这通常意味着在Tomcat的环境中,指定的数据源没有被正确地绑定或配置。 要解决这个问题,首先需要在Tomcat的配置文件中...

    JavaScript this使用方法图解

    8. **事件处理程序**: 在事件处理程序中,`this`通常指向触发事件的元素(DOM对象)。 9. **定时器**: 在`setTimeout`或`setInterval`的回调函数中,`this`通常指向全局对象。 通过理解这些用法,开发者可以更...

    this指针的使用.zip

    8. **`this`指针与`static`成员** `static`成员函数没有`this`指针,因为它们不属于任何特定的对象实例。它们是类级别的,不依赖于对象状态。 9. **`this`指针与成员函数指针** 成员函数指针允许将成员函数存储和...

    This PC Tweaker

    也就是说,除了可以更改Win8.1的现有的文件夹外,还可以在Win7或Win8上添加文件夹。 This PC Tweaker支持任意数量的文件夹添加,因此无论你是放置5个还是3个,都只要动一动鼠标即能搞定。当然这家伙还有一个特别的...

    七年级Starter Unit2 What’s this in English练习题及答案精选.doc

    8. 这是一个书包(schoolbag);9. 它是一个橙子(orange,由于orange首字母发音是元音,所以前加an);10. 这是一本书(book)。 第三部分是单项选择题,测试学生的语法知识和常识。例如,11题考查字母顺序,正确...

    C++里的-this.doc

    8. **`this`与`this`指针的复制** 当一个对象复制构造另一个对象时,两个对象的`this`指针会指向不同的内存地址,但它们指向的成员变量具有相同的值,除非显式地重载赋值运算符或复制构造函数。 9. **注意事项** ...

Global site tag (gtag.js) - Google Analytics