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

    this的使用环境有以下几种

    1、全局性函数调用

      我们通常在全局内声明和调用的函数都叫全局函数。在全局函数中,this等于window。

    例如下面一段代码中,运行结果应该是0。因为this调用的是全局变量,等同于window。

    var x = 1;
    
    function test() {
        this.x = 0;
        console.log(this.x); //0
    }
    test();

    2、作为对象方法的调用

    所谓对象方法,指的是对象中值为函数的属性。当函数不是全局调用,而是作为某个对象的方法调用时,this等于那个对象。

    例如下面这段代码,func是作为对象o的方法,所以func的调用中this指向对象o。

    var x = 1;
    
    function test() {
        console.log(this.x);
    }
    var o = {};
    o.x = 0;
    o.func = test;
    o.func(); //0

    3、作为匿名函数被返回的时候

    匿名函数的执行环境具有全局性,因此其this对象通常指向window。

    例如下面这段代码,由于getNameFunc返回的是一个匿名函数,所以返回函数的this指向window。

    var name = "The Window";
    var object = {
        name: "My Object",
        getNameFunc: function() {
            return function() {
                return this.name;
            }
        }
    };
    console.log(object.getNameFunc()()); //"The Window"

    4、作为构造函数的调用

    所谓构造函数,就是通过对这个函数使用new操作符来生成一个新对象,而this就是指这个新对象。

    例如下面这段代码,由于func是使用new操作符来构造的一个对象,所以this指func这个对象。

    var x=1;
    function func(){
        this.x=2;
    }
    var func=new func();
    console.log(func.x);//2
    console.log(x);//1

    5、使用apply调用函数的时候

    使用function.apply(obj,args)调用函数的时候,可以接受两个参数obj和args,其中obj用来代替function类里的this对象,所以此时函数内的this指的是apply的第一个参数。

    例如下面这段代码,如果apply没有参数,则默认调用全局对象,因此这时的运行结果为1,证明this指的是全局对象。如果apply有参数,则this指向的是第一个参数所指的对像。

    var x = 1;
    
    function test() {
        console.log(this.x);
    }
    var o = {};
    o.x = 2;
    o.func = test;
    o.func.apply();  //1
    o.func.apply(o); //2

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

  • 相关阅读:
    【1】Chrome
    Vue
    GitHub版本控制工具入门(一)
    Vue.js 组件笔记
    最全的javascriptt选择题整理
    网站如何实现 在qq中发自己链接时,便自动获取链接标题、图片和部分内容
    js 唤起APP
    密码加密MD5,Bash64
    HTTP和HTTPS的区别及HTTPS加密算法
    计算机网络七层的理解
  • 原文地址:https://www.cnblogs.com/meng9688/p/6815259.html
Copyright © 2011-2022 走看看