zoukankan      html  css  js  c++  java
  • Js普通函数中this和箭头函数中this

    Js普通函数中this

        //this的意思是“我的”,如我的名字叫张三,我的名字叫李四。每个人都可以用“我的”
        //张三说我的,那么“我的”就代表张三,李四说我的,那么“我的”就代表李四
    
        var name = "张三";
        function a(){
            console.log(this.name)
        }
        a();  //完整写法,windows.a(); this指向的是windows对象,打印的为张三
    
    
        var name="张三";
        var obj = {
            name: "李四",
            a:function(){
                console.log(this.name);
            }
        }
    
        obj.a(); //完整写法,windows.obj.a(); this指向为obj对象,打印的为李四
                 //为什么this不是指向的windows,因为this只会指向上一级的对象
    

    Js箭头函数中的this

    什么是作用域链?

    例子:

        //0.箭头函数为es6中新语法
        //1.js作用域是函数级的
        //2.该函数所在的作用域指向的对象
        //3.箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this
    
        var name ="张三";
        var obj ={
            a:()=>{
                console.log(this.name)
            }
        }
        obj.a();//输出的是张三,因为this所在作用域的上一级作用域是windows
    
        var name ="张三";
        var obj ={
            name:"李四",
            a:function(){
                var f = ()=>{
                    console.log(this.name);
                }
                return f;
            }
        }
        var f = obj.a();
        f();   //输出的是李四,因为this所在作用域的上一级作用域是a函数,该函数所在的作用域指向的对象是obj
    

    何时使用普通函数,何时使用箭头函数?

       //1.对于需要使用object.method()方式调用的函数,使用普通函数定义,不要使用箭头函数。对象方法中所使用的this值有确定的含义,指的就是object本身。
    
       //2.其他情况下,全部使用箭头函数。
    
  • 相关阅读:
    Ionic
    图片破碎 效果 修正
    去掉浏览器右侧动滚条宽度对页面的影响
    ng 依赖注入
    ng 通过factory方法来创建一个心跳服务
    ng 自定义服务
    ng $http 和远程服务器通信的一个服务。
    ng $interval(周期性定时器) $timeout(延迟定时器)
    ng $scope与$rootScope的关系
    函数重载
  • 原文地址:https://www.cnblogs.com/developer-ws/p/14101989.html
Copyright © 2011-2022 走看看