context 作用域小解
阿新 • • 發佈:2017-08-29
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 作用域小解