您现在的位置:首页 > 技术 > JavaScript知识笔记3:this

JavaScript知识笔记3:this

Javascript中this是一个指针概念,它表示当前运行的对象。在实现对象方法时,使用this指针来获得该对象自身的引用。Javascript中this指针式一个动态变量,一个方法内的this指针并不是始终都是指向定义方法的对象。

2016年07月

透明伽然

this的定义:

1)thisJavascript的一个原始表达式。

2)thisJavascript语言的一个关键字。

二者其实是描述了同样的一个观点,在Javascript中每一个保留的关键字都是一个原始表达式。这里需要特别标注的是undefined,这是一个原始表达式,但是它不是Javascript的关键字,它是系统保留的一个全局变量。

前段时间经常去研究jQuery插件源码,经常会看到类似这样的代码:

function myfunc(){

    var that = this;

    mything.on(click,function(){

       console.log(that);

})

}

看到“var _this = this;”这一句的时候,当时我确实是不理解这样的做法,通过对this进一步了解和研究,这样书写的目的:备份当前的this对象留作以后不时之需。

Javascriptthis是一个指针概念,它表示当前运行的对象。在实现对象方法时,使用this指针来获得该对象自身的引用。Javascriptthis指针式一个动态变量,一个方法内的this指针并不是始终都是指向定义方法的对象。

这样一段代码:

运行这段代码,分别得到的结果是12。可见getP()只定义了一次,但是在不同的环境或者说是场合下运行却显示了不同的结果,这就是源于this指针的变化决定的。

示例1

结果:9

示例2

结果:我的名字叫张展

示例3

结果:我的名字是程序员

以上3个例子,分别解释了this在不同的环境中返回值也是不同的。

示例1this指针指向window对象。

示例2name是一个全局变量,test()是一个全局函数,它们都属于最原始的window对象。

示例3this指针指向obj对象。

示例4


结果:undefined

这个示例并没有返回我们期望的test,原因input实质上是直接执行了onclick事件函数,调用了test()函数。onclick事件函数也是一个全局函数,this指针指向对象同样是是window对象。然而window对象上未曾定义title,所以是undefined

结果:test

此例是在上个示例基础上修改的,在onclick函数调用test()时,主动将input对象传值给test(),所以在test()中可以访问title属性。

结果:test

此段代码是我们在使用jQuery时最为常用的方法。this指针之所以能指向input标签,在取值之前jQuery通过$()找到input标签对象,并将它的click事件函数体重构,input标签对象就是函数的运行载体。

关于this,我暂时的理解整理大致在此。曾经在相关论坛上看见这样一些描述,当时就记下来了。

this是包含它的函数作为方法被调用时所属的对象。


订阅

欢迎订阅AnyForWeb出版物
欢迎订阅伽然出版物

栏目推荐

栏目推荐
JavaScript知识笔记9…

在jQuery源码中我们经常能看见各式各样…

栏目推荐
JavaScript知识笔记8…

函数的调用应该才是函数产生的根本,减…

栏目推荐
JavaScript知识笔记6…

在JS中使用操作符主要用来执行数学、相…

栏目推荐
JavaScript知识笔记5…

周知JS语法相对简单,语言结构简单,这…

栏目推荐
JavaScript知识笔记4…

JS相对于那些所谓重量级语言(C++、C#…

栏目推荐
JavaScript知识笔记3…

Javascript中this是一个指针概念,它表…

栏目推荐
JavaScript知识笔记2…

常见的变成语言Java、C#、C++等,同样…

AnyFroWebUED  

版权所有 © 2009-2016  沪ICP备14026814号-10

 

 

返回

很抱歉!

您现在还没有开通阅读权限,如有疑问,请联系我们。

联系电话:021-52047186

返回