首页 > 其他 > 详细

context 作用域小解

时间:2017-08-29 16:46:35      阅读:254      评论:0      收藏:0      [点我收藏+]

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);
    }
}

 

context 作用域小解

原文:http://www.cnblogs.com/dreamone/p/7449019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!