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)的 函数.
-------------------------------------------------------
分享到:
相关推荐
《关于在Windows 8系统上修复“this program has been damaged”错误的仙剑三游戏补丁详解》 在享受电子游戏带来的乐趣时,有时我们可能会遇到一些技术问题,特别是对于那些较老的游戏,如经典的《仙剑奇侠传三》在...
#### 8. `this`指针与多线程环境 在多线程环境中,`this`指针的使用可以帮助区分不同的对象实例。例如,在线程回调函数中,通过传递`this`指针,可以确保每个线程正确地操作属于自己的对象实例。 总结来说,`this`...
8. 兼容性:MapThis应能兼容多种型号的PSP设备,以及不同地区的GPS接收器。不过,用户在使用前需要确保软件与硬件的兼容性。 9. 能耗考虑:PSP电池续航有限,使用GPS导航会消耗更多电量。用户在使用MapThis时,需...
在Red Hat 8.2操作系统中,用户可能会遇到一个常见的问题,即在尝试使用`yum`命令安装软件时,系统返回错误提示"This system is not registered to Red Hat Subscription Management"。这个错误表明你的系统未注册到...
在Java 8之后,可以通过`this`来调用默认构造器,结合`record`关键字创建不可变的数据类: ```java record Person(String name, int age) { public Person { this(name, age, "Unknown"); // 调用带有三个参数...
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 8及之后的版本,这部分功能被移至元空间(Metaspace)。 当我们使用`this`关键字时,实际上是在堆内存中查找对应的实例变量。例如,当我们在`display`方法中调用`this.firstName`时,JVM会在当前对象的堆...
8. **使用方法**:使用This PC Tweaker时,用户通常需要按照工具提供的向导或设置界面进行操作,选择要优化的项目,然后应用更改。在进行任何系统优化前,最好备份重要数据,以防不测。 9. **维护与更新**:为了...
- **节目开场**:节目于晚上8点正式开始,但Jason会在8:02才抵达,由主持人Terry Donovan在其进入前进行简短的介绍。 - **录制细节**:描述了Jason从到达工作室到被引入座位的全过程,以及主持人与嘉宾之间的互动...
8. `this`指针的注意事项 - `this`在静态成员函数中是无效的,因为静态成员函数与特定对象无关。 - `this`在构造函数的初始化列表中是未定义的,因为它在对象完全构造之前就已经存在,此时成员变量还没有被初始化...
8. 大数据与可视化的结合:大数据时代对数据可视化提出了新的挑战,包括处理大规模数据集、实时数据流的可视化,以及如何有效表达复杂数据的关系。《Visualize This》可能会讨论在大数据环境下进行有效可视化的策略...
8. **适用场景**:EditThisCookie适用于各种场合,包括但不限于Web开发、用户体验测试、隐私保护以及排查网页功能异常。它可以帮助用户更好地理解网页的工作机制,同时为用户提供对自身数据的控制权。 9. **注意...
【this指针探秘】 在C++编程语言中,`this`指针是一个非常关键的概念,它是每个非静态成员函数的隐含参数。这个指针指向调用成员函数的对象自身,使得成员函数能够访问和操作对象的数据成员。本文将深入探讨`this`...
8. **快速搜索**:内置的搜索功能让你能快速找到特定的Cookie,尤其在处理众多Cookie时非常实用。 9. **与开发者工具集成**:EditThisCookie还能与Chrome的开发者工具无缝集成,方便你在调试时快速查看和修改Cookie...
在这个问题中,开发者遇到了一个常见的错误:“Name jdbc is not bound in this Context”,这通常意味着在Tomcat的环境中,指定的数据源没有被正确地绑定或配置。 要解决这个问题,首先需要在Tomcat的配置文件中...
8. **事件处理程序**: 在事件处理程序中,`this`通常指向触发事件的元素(DOM对象)。 9. **定时器**: 在`setTimeout`或`setInterval`的回调函数中,`this`通常指向全局对象。 通过理解这些用法,开发者可以更...
8. **`this`指针与`static`成员** `static`成员函数没有`this`指针,因为它们不属于任何特定的对象实例。它们是类级别的,不依赖于对象状态。 9. **`this`指针与成员函数指针** 成员函数指针允许将成员函数存储和...
也就是说,除了可以更改Win8.1的现有的文件夹外,还可以在Win7或Win8上添加文件夹。 This PC Tweaker支持任意数量的文件夹添加,因此无论你是放置5个还是3个,都只要动一动鼠标即能搞定。当然这家伙还有一个特别的...
8. 这是一个书包(schoolbag);9. 它是一个橙子(orange,由于orange首字母发音是元音,所以前加an);10. 这是一本书(book)。 第三部分是单项选择题,测试学生的语法知识和常识。例如,11题考查字母顺序,正确...
8. **`this`与`this`指针的复制** 当一个对象复制构造另一个对象时,两个对象的`this`指针会指向不同的内存地址,但它们指向的成员变量具有相同的值,除非显式地重载赋值运算符或复制构造函数。 9. **注意事项** ...