• 菜鸟聊JavaScript中this


    菜鸟聊this

    this在JavaScript中是一个比较头疼的问题,我现在以一枚菜鸟的观点结合代码简单的谈下JavaScript中的this指向问题。

    1.例子1

    function a() {
        var user='zhanglei';
        console.log(this.user);  //undefined
        console.log(this);  //window
    }
    a();
    

    this最终指向调用他的对象,这里的a实际是被window对象点出来的,下面的代码可以证明:

        function a() {
        	var user='zhanglei';
        	console.log(this.user);  //undefined
        	console.log(this);  //window
    	}
    window.a();
    

    2.例子2

    var o={
        user:'zhanglei',
        fn:function () {
          console.log(this.user);  //zhanglei
        };
    }
    
    o.fn();
    

    this的指向问题不是在函数创建时候就决定的,而是在调用的时候才能决定。

    3.例子3

    var o = {
        name:'张磊',
        fn:function () {
          console.log(this.name);  //张磊
        }
    }
    window.o.fn();
    

    var o = {
        name:'张磊',
        paly:{
    	    name:'风流倜傥小小张',
    	    fn:function () {
    	    console.log(this.name);  //风流倜傥小小张
    	    }
        }
    }
    
    o.b.fn();
    

    最后总结一下:

    1.this的指向问题是在函数调用的时候调用的,而不是在开始创建的时候就决定的。
    2.如果函数中有this,但是它没有被上一级的对象所调用,那么this的指向依旧是window对象。
    3.如果函数中有this,这个函数有被上一级的对象调用,此时this就是指向上一级的对象。
    4.如果一个函数中有多个this。这个函数中包含多个对象,尽管这函数被最外层的对象所调用,this的指向只是它的上一级对象。

    张磊,技术菜鸟一枚,在web开发中一直苦苦挣扎,追求上岸! 联系QQ:1908002007 有技术问题可以随时联系,闲聊也是可以的!欢迎打扰!
  • 相关阅读:
    (MonoGame从入门到放弃2) 初识MonoGame
    C# 13行代码带你模拟登录QQ空间
    (MonoGame从入门到放弃1) MonoGame环境搭建
    Format 、FormatDateTime 与 FormatFloat
    HTML中的em为何物?
    ASP.NET日期格式函数
    解决windows2003不能上传大于200K的问题
    信用卡知识知多少?
    解决:Win7打开控制面板主页就重启
    ASP.NET生成随机密码
  • 原文地址:https://www.cnblogs.com/zhnaglei/p/6566412.html
Copyright © 2020-2023  润新知