zoukankan      html  css  js  c++  java
  • 菜鸟聊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 有技术问题可以随时联系,闲聊也是可以的!欢迎打扰!
  • 相关阅读:
    防止域名恶意指向的解决办法
    Spring @Configuration @Import
    CAS 集成认证
    远程桌面登录蓝色屏幕、不显示桌面怎么解决?
    终端服务器超出了最大允许连接数
    Fiddler 常见几种解决捕获不到请求的方法
    android TimerTask 的简单应用
    Android 数字签名学习笔记
    Android 遍历卡数据并按图片,音乐等分类保存
    Android 最简单的SD卡文件遍历程序
  • 原文地址:https://www.cnblogs.com/zhnaglei/p/6566412.html
Copyright © 2011-2022 走看看