zoukankan      html  css  js  c++  java
  • context 作用域小解

    context 是js 的作用域和this上下文对象的合集,对于它的理解是前端开发的重中之重

    知识点

    1  对象的作用域,什么时候是User对象,是时候是window全局对象?

     变量的有效范围就是作用域,分为全局作用域和局部作用域,局部作用域只有在函数内部可以访问,全局作用域在任何位置都可以访问

        直接调用的方法 作用域指向该对象

        通过定义变量创建的方法 作用域会指向window全局对象上

    2  apply 和 call 方法的区别是什么?该怎么用?

       用来改变函数this作用域的指向的方法

       call 传入多个参数 

    self.call(1,2,3,4,5);

       apply 传入数组

    self.apply(context,arguments);

    3 如何把作用域是 window 的方法 绑定到 User对象上?

     内置方法 Function.bind(User) ;  原理无外乎  self.apply(context,arguments); 

    面试题:

    var User = {  
      count: 1,
    
      getCount: function() {
        return this.count;
      }
    };
    
    console.log(User.getCount()); // 1 => User
    
    var func = User.getCount;
    
    console.log(func()); // undefined => Window
    
    // 修改指向User
    var func1 = User.getCount.bind(User);
    console.log(func1());
    // 兼容
    Function.prototype.bind = Function.prototype.bind || function(context){
        var self = this;
        console.log(context); // User 作用域
        console.log(arguments); // getCount 作用域
        return function(){
            return self.apply(context,arguments);
        }
    }
    每天一点点积累
  • 相关阅读:
    Git轻松入门3:远程仓库篇
    Git轻松入门2:分支篇
    Git轻松入门1:本地仓库篇
    通俗易懂的解释:什么是API
    小白都看得懂的Javadoc使用教程
    尾调用与尾递归
    要理解递归就要先理解递归:手把手教你写递归
    不复杂的空间复杂度
    不复杂的时间复杂度
    Java程序执行过程及内存机制
  • 原文地址:https://www.cnblogs.com/dreamone/p/7449019.html
Copyright © 2011-2022 走看看