javascript中的this到底指什么?

JavaScript010

javascript中的this到底指什么?,第1张

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>

你这是C++编程语言吧?如果是,那我的回答就是对的:

this表示“该对象”,多数情况下是个“类”对象,this是个特定的变量,表示指向类对象(实例)自身的指针,*(this)则表示指针所指向的对象(实例)。

this常见的用途是返回实例,举例如下:

class A //类A

{

……

class A &Func1 (int b) //类A中的一个函数Fun1(),其返回值指向一个类A对象

}

class A::Fun1(int b) //类A的函数Fun1的描述

{

……

return (*this); //返回了A的这个对象

}

class B//类B

{

class A *pA; //类B中的一个变量pA,指向class A型的指针

……

void Func2 (class A *p)//类B中的一个函数Fun2(),其参数是一个指向class A型的指针变量

}

void class B::Func2(classA *p) //类B的函数Fun2的描述

{

int t = 2

class A *d

……

d->A()

*pA = p->Func1(d) //类B的对象中的变量pA获得(指向)了一个由

//Fun1返回的类A对象

}

this指针在C++中工程应用中非常普遍。

首先要认清楚一点,就是JS中,一个函数(function)在被直接调用的时候,其中的this指针永远指向window。

(obj.getName = obj.getName)() 首先前面的表达式中,是一个赋值操作。是将obj.getName作为一个函数,赋值给obj.getName,最终(obj.getName = obj.getName)的返回值是这个函数function(){return this.name},根据上面那句话所说的,这个函数执行的时候this指向window。

如果 (obj.getName)(),就是直接执行obj.getName方法,这时候指针就是指向obj对象的。结果就是 my object

我们还可以通过js中的call 和 apply 方法,强行去让方法被一个对象调用,例如:

(obj.getName = obj.getName).call(obj)

这样返回的也是 my object

讲的不是很细致,也不一定每句话都用词很准。可以多查些资料,多看些书。不求一下子理解。