`
axl234
  • 浏览: 259979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Javascript语言中this关键字(变量)的用法

 
阅读更多

最近很多 Javascript初学者朋友总在问: Javascript 的this 关键字的用法。我在这里索性总结一下 this关键字的用法。

 

this 关键字是面向对象编程语言中的一个重要概念!在JAVA,C,C#,C++等语言中,this 总是指向当前的运行对象。但是在 Javascript ,由于javascript的动态性以及词法作用域特性,this的指向在运行时才确定。

 

this 关键字的用法其实比较复杂,不过你只要牢记一句话就可以:

“this 变量:永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。

如果处在匿名函数中、或者不处于任何对象中,this 都指向宿主的根对象(在浏览器里面就是 window)”

 

 

外,javascript中还用 call() apply() 来调用函数,再记住下面这两句话:

如果是call()、apply()、with(),指定的this是谁,就是谁 !

普通的函数调用,函数被谁调用,this就是谁。

(忽然想起:ECMAScript 5 的严格模式中,严禁使用 with() 函数,并且ECMAScript 3 中并不推荐使用 with())

 

 

上面的举例还是太过复杂,不太科学。我举一个更加直白的说明:Javascript 的 this 很花心,在哪个对象的家里,就是那个对象的。

而 C,C++,C# 的 this 很专一,无论在哪,都属于原配!

并且 Javascript 的函数作用域 则像出生地,出生在哪里,出生地就是哪里!和运行环境无关!(

分享到:
评论

相关推荐

    JavaScript中的this关键字介绍与使用实例

    当创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好的方式。 当然,既然是面向对象的语言,必然存在访问权限的问题,这里也和this关键字息息相关。下面...

    详解JavaScript中this关键字的用法

    this是函数内部的一个特殊对象,this引用的是函数据以执行的环境对象(关于环境对象我们会在文章最后作补充说明),在调用函数前this的值并不确定,不同的调用方式会导致this值的改变。 window.num = 22; var o = {...

    JS中的this变量的使用介绍

    JavaScript中this的使用 在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余。 对于this变量最要的是能够理清...

    编写可扩展的高质量代码的高级 JavaScript 概念 深入研究该语言最先进的概念和技术,以构建更好、更强大的 Web 应用程

    我将从闭包开始,这是一种在 JavaScript 中创建私有变量和函数的强大方法。然后,我this详细解释关键字。 接下来,我将深入探讨原型继承,这是 JavaScript 的一个关键特性,它允许对象从其他对象继承属性和方法。...

    JavaScript详解(第2版)

     13.6.2 表单和按钮中的this关键字   13.6.3 表单和onClick事件处理函数   13.6.4 表单和onFocus、onBlur事件处理函数   13.6.5 表单和onChange事件处理函数   13.6.6 表单和onSubmit事件处理函数  ...

    javascript完全学习手册1 源码

    10.2.3 使用事件this关键字 269 10.2.4 使用属性处理事件 270 10.2.5 使用JavaScript处理事件 271 10.3 标准事件模型 273 10.3.1 事件传播 273 10.3.2 注册事件处理程序 274 10.3.3 设置对象的事件处理程序 276 ...

    javascript完全学习手册2 源码

    10.2.3 使用事件this关键字 10.2.4 使用属性处理事件 10.2.5 使用JavaScript处理事件 10.3 标准事件模型 10.3.1 事件传播 10.3.2 注册事件处理程序 10.3.3 设置对象的事件处理程序 10.3.4 事件的模块...

    javascript语言参考+教程 CHM

    JScript 保留关键字; 高级 JScript; 创建高级对象; 递归; 变量范围; 复制、传递和比较数据; 使用数组; 特殊字符; 脚本问题解答; 条件编译; 条件编译变量; 在浏览器中显示信息; 使用消息框; 语言参考; ...

    精通JavaScript

    • 6.4.htm this关键字的使用 • 6.5.htm 数组的length属性 • 6.6.htm 数组元素遍历 • 6.7.htm 数组元素遍历 • 6.8.htm 数组元素遍历之二 • 6.9.htm 用构造...

    Javascript数组操作高级心得整理

     在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。 9  使用arguments.length检测参数个数 9  模拟函数重载 10 (3) Function对象(类) 10  Function对象的使用 10  使用...

    微软JavaScript手册

    在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示...

    javascript文档

    在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示...

    JavaScript王者归来part.1 总数2

     13.2.6 “this”关键字   13.3 标准事件模型   13.3.1 起泡和捕捉--浏览器的事件传播   13.3.2 事件处理函数的注册   13.3.3 把对象注册为事件处理程序   13.3.4 事件模块和事件类型   13.3.5 关于...

    JS 函数式编程指南

    我们不得不到处使用 bind 以免 this 不知不觉地变了,语言里没有类可以用(目前还没有),我们还发明了各种变通方法来应对忘记调用 new 关键字后的怪异行为,私有成员只能通过闭包(closure)才能实现,等等。...

    javascript函数的解释

    13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS...

    JavaScript笔记

    使用方法:方法名()-->方法调用-->立即执行 2.js文件:网页外专门保存js脚本的文件--推荐 强调:HTML、CSS、JS都要使用UTF-8编码保存(window系统) 使用js文件引入网页:[removed][removed] 强调:一旦定义...

    js_oop_info:关于 JavaScript OOP 的信息

    成员:方法或字段Class : 一个旨在通过使用new关键字被多个实例重用的函数(还有其他方法可以创建一个实例) function className(){ this.field=''; } function className(){ this.field=''; } 实例:分配给类实例...

    精通javascript

    • 6.4.htm this关键字的使用 • 6.5.htm 数组的length属性 • 6.6.htm 数组元素遍历 • 6.7.htm 数组元素遍历 • 6.8.htm 数组元素遍历之二 • 6.9.htm 用构造...

    107个常用javascript语句

    13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS...

Global site tag (gtag.js) - Google Analytics