1. 程式人生 > >context 作用域小解

context 作用域小解

return window 作用域 getc s上下文 兼容 sel bsp all

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 作用域小解