javascript中的this到底指啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中的this到底指啥?相关的知识,希望对你有一定的参考价值。

请高手详细解释一下。

javascript:this是什么?

定义:this是包含它的函数作为方法被调用时所属的对象。
说明:这句话有点咬嘴,但一个多余的字也没有,定义非常准确,我们可以分3部分来理解它!
1、包含它的函数。2、作为方法被调用时。3、所属的对象。
看例子:
function to_green()
this.style.color="green";

to_green();
上面函数中的this指的是谁?
分析:包含this的函数是,to_green
该函数作为方法被调用了
该函数所属的对象是。。?我们知道默认情况下,都是window对象。
OK,this就是指的window对象了,to_green中执行语句也就变为,window.style.color="green"
这让window很上火,因为它并没有style这么个属性,所以该语句也就没什么作用。
我们在改一下。

window.load=function()
var example=document.getElementById("example");
example.onclick=to_green;

这时this又是什么呢?
我们知道通过赋值操作,example对象的onclick得到to_green的方法,那么包含this的函数就是onclick喽,
那么this就是example引用的html对象喽。
this的环境可以随着函数被赋值给不同的对象而改变!
下面是完整的例子:

<script type="text/javascript">
function to_green()
this.style.color="green";

function init_page()
var example=document.getElementById("example");
example.onclick=to_green;

window.onload=init_page;
</script>
<a href="#" id="example">点击变绿</a>

参考资料:http://hi.baidu.com/tkocn/blog/item/7c66bd02f7395b084afb5150.html

参考技术A javascript在web开发中的无处不在,未来的web程序必然拥有大量的js代码支持。javascript这门语言有点残废,“混乱”的this应用让人头痛,我常常搞错。整理一些js中this的使用方法。关键字this总是指向调用该方法的对象.
1.表示对触发事件的DOM对象的引用
<div onclick="可以在里面使用this">division element</div>
onclick="function(this)";onclick="function()this.."
脚本引擎生成了一个div实例对象的匿名成员方法,而onclick指向这个方法
2.在函数内使用this,表示引用当前window对象
<script language="javascript">
function a()this..
</script>
对于IE浏览器可以用this.event.srcElement来获取对当前DOM对象的引用,FF不行。这种方法如果在使用函数的时候new了一下,那么this将会表示函数a,而不是window对象.var b=new a(); var b=a();两者会产生不一样的结果,很神奇的this
3、用DHTML方式在事件处理函数中使用this关键字:
<script language="javascript">
var div = document.getElementById('elmtDiv');
div.onclick = function()

// 在此使用this
;
</script>
这里的this关键字指示的内容是div元素对象实例,在脚本中使用DHTML方式直接为div.onclick赋值一个EventHandler的方法,等于为div对象实例添加一个成员方法。这种方式和第一种方法的区别是,第一种方法是使用HTML方式,而这里是DHTML方式,后者脚本解析引擎不会再生成匿名方法。Jquery中的 $('div').click(function()$(this)..);$(this)也就是这种用法。
4.类定义中使用this
function JSClass()

var myName = 'jsclass';
this.m_Name = 'JSClass';


JSClass.prototype.ToString = function()

alert(myName + ', ' + this.m_Name);
;

var jc = new JSClass();
jc.ToString();
这时this表示m_Name是JSClass的成员变量,var myName只能算是“构造函数”内的一个变量,外部肯定无法引用。

5.函数中的内部函数中使用this
function OuterFoo()

this.Name = 'Outer Name';

function InnerFoo()

var Name = 'Inner Name';
alert(Name + ', ' + this.Name);

return InnerFoo;

OuterFoo()();
OuterFoo()里面的this.Name表示window.Name,InnerFoo()里面的this.Name也表示window.Name

还有几个空间介绍的不错
我也只是转下
javascript中有好多东西定义的都比较混乱

参考资料:http://hi.baidu.com/bdui/blog/item/4373ac07397c72ce7b894786.html

参考技术B this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。
和传统意义的面向对象的语言不同,JavaScript 中的 this 指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的.
推荐一本书给你,这本书里对this指针有很详细的解说。
《JS资料-征服Ajax - Web20开发技术详解试读版.pdf》
参考技术C   this是一个语言中的关键字,它就是一个对象。
  thispage的意思是这个页面。
  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
参考技术D this代表当前对象 比如你点击Button,this就代表了Button这个按钮.
Button有很多属性如 Button.caption 也可以写成this.caption

以上是关于javascript中的this到底指啥?的主要内容,如果未能解决你的问题,请参考以下文章

JS中的this用法详解

Java:读了好多个项目的代码,总是出现这handle那handle的,handle在开发中到底指啥模块啊?

JavaScript中的this到底是怎样的?

halcon xld轮廓点到底指啥?具体啥意思?

MIDI到底是指啥??

Javascript中的Prototype到底是啥