定义: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
讲的不是很细致,也不一定每句话都用词很准。可以多查些资料,多看些书。不求一下子理解。