zoukankan      html  css  js  c++  java
  • JavaScript中的this

    this是Javascript语言的一个关键字。

    它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

    随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

    this的四种用法

    1. 纯粹的函数调用

            这是函数的最通常用法,属于全局性调用,因此this就代表全局对象window。请看下面这段代码,它的运行结果是1。

    function test(){
        this.x = 1;
        alert(this.x);
      }
      test(); // 1
    
    
    为了证明this就是全局对象,我对代码做一些改变:
      var x = 1;
      function test(){
        alert(this.x);
      }
      test(); // 1
    
    
      
      var x = 1;
      function test(){
        this.x = 0;
      }
      test();
      alert(x); //0
    2. 作为对象方法的调用

            函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

    function test(){
        alert(this.x);
      }
    var obj = {};
    obj.x = 1;
    obj.m = test;
    obj.m(); // 1
    3.作为构造函数

            就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

    function test(){
        this.x = 1;
    }
    var obj = new test();
    alert(obj.x); // 1
    //运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:
    var x = 2;
    function test(){
      this.x = 1;
    }
    var obj = new test();
    alert(x); //2
    //运行结果为2,表明全局变量x的值根本没变。
    4. apply调用
    //apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
      var x = 0;
      function test(){
        alert(this.x);
      }
      var obj={};
      obj.x = 1;
      obj.m = test;
      obj.m.apply(); //0
    //apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。
    //如果把最后一行代码修改为
      a.m.apply(obj); //1
    //运行结果就变成了1,证明了这时this代表的是对象obj。
  • 相关阅读:
    Python-2d形变 动画 表格
    Python-JS (JS介绍~JS的基础数据类型)
    Python-CSS高级 题目
    Python-ccs动画及阴影
    Python-css高级
    Python3 shevel模块,更高级的json序列化数据类型模块(比pickle更高级)
    Python3 第五周大纲(模块,导入方法、import本质,导入优化,模块的分类)
    python3 5月26日 time模块常用时间转换 &datetime()模块学习 random()
    Python软件目录结构
    Python3 json &pickle 数据序列化
  • 原文地址:https://www.cnblogs.com/fan-jing/p/7455884.html
Copyright © 2011-2022 走看看