JavaScript 中的 this 关键字

this是Javascript语言的一个关键字。它代表函数运行时,自动生成一个内部对象,只能在函数内部使用。this所指的就是直至包含this指针的上层对象。

普通函数  ---------this-全局对象window

对象的方法---------this-该对象

构造函数  ---------this-新构造的对象

通过call和apply可以重新定义函数的执行环境,即this的指向。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

  1. 全局性调用,此时this代表全局对象Global
   function test(){
    this.x = 1;
    alert(this.x);
  }
  test(); // 1
  ------------------------------------------------
  var x = 1;
  function test(){
    alert(this.x);
  }
  test(); // 1

2. 作为对象方法的调用,这时this就指这个上级对象。

    function test(){
    alert(this.x);
  }
  var o = {};
  o.x = 1;
  o.m = test;
  o.m(); // 1

3.作为构造函数调用,这时,this就指这个新对象。

    var x = 2;
  function test(){
    this.x = 1;
  }
  var o = new test();
  alert(x); //2

4.call,apply调用

apply(),call()是函数对象的一个方法,作用是改变函数的调用对象,第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

    var x = 0;
  function test(){
    alert(this.x);
  }
  var o={};
  o.x = 1;
  o.m = test;
  o.m.apply(); //0
    o.m.apply(o); //1

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

时间: 2024-12-08 23:37:27

JavaScript 中的 this 关键字的相关文章

JavaScript中的this关键字

"this"关键字是JavaScript中广泛应用的一种特性,但它经常也是这门语言中最容易混淆和误解的特性."this"的实际意义是什么?它是如何求值的? 本文试图以清晰的方式澄清和解释这问题的答案. 有过其他编程经验的人对"this"关键字并不陌生,大部分时候当通过构造函数实例化一个类的实例时,它指新创建的对象.例如,如果我有一个类Boat(),其拥有一个moveBoat()方法,当在moveBoat方法中引用"this"的

转载 深入理解JavaScript中的this关键字

转载原地址: http://www.cnblogs.com/rainman/archive/2009/05/03/1448392.html 深入理解JavaScript中的this关键字 1. 一般用处 2. this.x 与 apply().call() 3. 无意义(诡异)的this用处 4. 事件监听函数中的this 5. 总结 在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程

JavaScript中的this关键字(copy别人的)

颜海镜 专注web前端,分享html,css,javascript,jquery等相关原创知识-- JavaScript中的this关键字 "this"关键字是JavaScript中广泛应用的一种特性,但它经常也是这门语言中最容易混淆和误解的特性."this"的实际意义是什么?它是如何求值的? 本文试图以清晰的方式澄清和解释这问题的答案. 有过其他编程经验的人对"this"关键字并不陌生,大部分时候当通过构造函数实例化一个类的实例时,它指新创建的

JavaScript中的let关键字

JavaScript中的let关键字 JavaScript中使用var定义变量可能存在的问题 var定义的变量没有块作用域 var定义的全局变量会自动添加全局window对象的属性 var定义的变量会提前装载 而let关键字的出现解决了以上的问题: <script type="text/javascript">                                for( let i = 0;i<10;i++){                      

关于Javascript中通过var关键字声明变量和function关键字声明函数的笔记

一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1,b,c; //关键字显式声明变量a,b,c,并给a赋值console.log(a); //1 //由于b,c未定义变量类型,因此输出"undefined"console.log(b); //undefinedconsole.log(c); //undefined //如果变量未声明,则输出

javascript 中的 this 关键字详解

1.javascript 中 什么是 this? this 指的是当前行为执行的主体,或者是当前方法执行的主体 context:是当前行为或者方法执行的环境 实例: xx 去北京饭店吃东西:上下文是“北京饭店”, this 是 xx 2. 那么如何判断一个函数在执行的时候,函数体内的 this 关键字是谁呢?主要有以下几条规律:  1)一个函数体内的 this 关键字和这个函数的在哪里定义,哪里执行都没有关系;   2) 判断一个方法执行的时候,函数的执行主体是谁?主要看方法前面有没有点(.),

深入理解JavaScript中的this关键字

1. 一般用处 2. this.x 与 apply().call() 3. 无意义(诡异)的this用处 4. 事件监听函数中的this 5. 总结 在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余. 1. 一般用处 对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏繁杂.而我的理解是:首先分析this所在

用自然语言的角度理解JavaScript中的this关键字

转自:http://blog.leapoahead.com/2015/08/31/understanding-js-this-keyword/ 在编写JavaScript应用的时候,我们经常会使用this关键字.那么this关键字究竟是怎样工作的?它的设计有哪些好的地方,有哪些不好的地方?本文带大家全面系统地认识这个老朋友. 这里的小明是主语,如果没有这个主语,那么后面的代词『他』将毫无意义.有了主语,代词才有了可以指代的事物. 类比到JavaScript的世界中,我们在调用一个对象的方法的时候

正确理解JavaScript中的this关键字

JavaScript有this关键字,this跟JavaScript的执行上下文密切相关,很多前端开发工程师至今对this关键字还是模棱两可,本文将结合代码讲解下JavaScript的this关键字. this和对象的关系 首先来看下面的代码: var person = { name:'Theo Wong', gender:'male', getName:function(){ console.log(person.name); } }; person.getName(); 定义了一个perso

深入理解javascript中的this 关键字(转载)

在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余. 1.一般用处 对于this关键字最重要的是明确this所引用的对象是哪一个,也许很多资料上都有自己的解释,但有些概念将的偏繁杂.而我的理解是:首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象. Example 一: var obj = {}; obj.x = 100; obj.y