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);
        }
    }
    每天一点点积累
  • 相关阅读:
    MySQL经典练习题(四)
    MySQL经典练习题(三)
    MySQL经典练习题(二)
    MySQL经典练习题(一)
    MySQL经典练习题-数据准备
    表连接
    子查询
    MySQL中函数分类
    排序
    数据分组
  • 原文地址:https://www.cnblogs.com/dreamone/p/7449019.html
Copyright © 2011-2022 走看看