zoukankan      html  css  js  c++  java
  • what's this? 浅谈js中this的指向问题

    刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁。经过一段时间的了解,我想跟大家分享下自己的理解。
    懵逼

    何时出现this

    函数在调用的时候,会自动获得两个特殊变量:this和arguments,所以,函数可以调用this变量。

    this指向谁?

    通过一段时间的练习,我觉得可以总结为一句话:this指向他所在函数的作用域对象。如果函数是定义在全局作用域的,那么this指向window,如果函数被某个自定义对象调用,那么this就指向该对象。下面我们通过几个场景进行理解:

    1. 场景一:定义在全局作用域
    function test(){
    	alert(this);
       }
       test();
    

    结果:
    window全局对象
    2. 场景二:被某个对象调用

    var O = {
    	f : function(){
    		alert(this);
    	}
    }
    O.f();
    

    结果:
    返回调用该函数的对象
    3. 场景三:闭包

    var object = {
    	getThis : function(){
    		return function(){
    			return this;
    		}
    	}
    }
    alert(object.getThis()());
    

    结果:
    window对象

    var object = {
    	getThis : function(){
    		var that = this;
    		return function(){
    			return that;
    		}
    	}
    }
    alert(object.getThis()());
    

    结果:
    object对象
    对场景三的解释说明:大家都清楚闭包的一个特点是可以保留外部函数的变量对象,在场景三的第二个里,我们使用that保存了this的值,this指向object对象,所以that也指向object对象。

    总结

    其实this的问题并不复杂,我们只要记住,this指向函数所在作用域的作用域对象,然后平时多练习,就可以知道this指向谁了。

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/woodyblog/p/6005404.html
Copyright © 2011-2022 走看看