Javascript的this关键字使用方法

Javascript的this关键字使用方法

ID:38041164

大小:50.50 KB

页数:5页

时间:2019-05-24

Javascript的this关键字使用方法_第1页
Javascript的this关键字使用方法_第2页
Javascript的this关键字使用方法_第3页
Javascript的this关键字使用方法_第4页
Javascript的this关键字使用方法_第5页
资源描述:

《Javascript的this关键字使用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Javascript的this关键字使用方法Javascriptthis关键字一般来说大家并不陌生,但是如何更好的用好Javascriptthis关键字却需要我们仔细思考,希望本文对广大程序员有所帮助。摘要本系列博文主要谈一些在Javascript使用中经常会混淆的高级应用,包括:prototype,closure,scope,this关键字.对于一个需要提高自己Javascript水平的程序员,这些都是必须要掌握的.本节主要介绍this关键字和scope.本文的Javascript源代码从这儿下载.Contents摘要引入this关键字关于

2、apply和callscope详述一些说明结论后记参考资料本文的源码引入作为一个程序员,你可能早已经习惯于面向对象语言中指代当前对象的引用(或者指针),如的c++中的this或者python中的self,当然具有OO属性(Javascript其实更多的是一种所谓的函数式语言)的Javascript同样,它也具有引用当前属性的对象的指针(或者引用),也就是this关键字.为了理解this关键字,如果你只想记住一句话,那应该是this关键字总是指向当前函数的所有者对象(执行空间),至于这句话如何理解,可以参见下面的详细说明.那么什么是scope呢

3、?wikipedia中的解释是Incomputerprogramming,scopeisanenclosingcontextwherevaluesandexpressionsareassociated.中文即是所谓的作用域,它指明的是一个数值或者表达式所关联的上下文(能够被引用的执行空间).scope与this有什么关系呢?如果从上面的定义来看,this指向的总是当前引用此函数的对象,而当你要判断当前引用的对象时,这时你就得弄清楚当前函数所在的scope.具体可见下面的分析.Javascriptthis关键字请看下面的几个例子.一个pytho

4、n的例子:1.class Person(object): 2."""a person class 3.    """ 4.def __init__(self, name): 5.self.name = name    #这里的self指向的是实例化后的对象,如下面中的zhutao 6.def get_name(self): 7.return self.name 8.zhutao = Person("zhutao") 9.print zhutao.name 10.一个 Javascript 的例子: 11. 12.window.name = "

5、zhutao from window" 13.var get_name = function(){ 14.return this.name;   // this的具体指向只能在运行时才能确定,也就是确定运行时调用其的对象 15.}; 16.alert(get_name());  // 输出zhutao from window, get_name调用的对象为window 17.var obj = {} 18.obj.name = "zhutao from obj"; 19.alert(get_name.apply(obj)); // 输出zhu

6、tao from obj, 我们强制地使用了 apply来更改调用的对象,使其指向obj 20.var innerobj = { 21."name" : "zhutao from innerobj" 22.}; 23.innerobj.get_name = get_name;   // 使得innerobj的get_name方法指向了global scope的get_name函数 24.alert(innerobj.get_name()); // 输出zhutao from innerobj, 此时this指向的是innerobj 那么从上面

7、的简单例子来看,this总是在运行时才能确定其具体的指向,也才能知道它的调用对象.而这点也正是动态语言一个重要特性.那么如何确定当前this指向的引用对象呢?通常可以这样判断:如果在global的scope(可以参见下面的说明来明确什么是globalscope)来调用,则指向的是bowser的顶级对象window例如:get_name()如果,有类似于这样的引用,innerobj.get_name()则很显然this指向的是innerobj如果我们使用了apply,call来进行强制的引用对象指向,则也会很显然地指向强制的对象,如get_na

8、me.apply(obj).关于apply和call这2个关键字可以很简单地理解为进行this引用对象(运行空间)强制转换,二者的语法如下:1.fun.call(o

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。