JS THIS

Javascript 的this绑定使用时容易混淆,是语言的一个设计失误。而Js的闭包是这门语言的精髓。其实this是由函数的调用方式决定的,this代表函数执行时的上下文,而函数的调用有五种

1
2
3
4
5
6
7
8
9
10
11
function ex1(name) {}
function Obj(name) {}
var obj = {
ex1: function() {}
};

ex1('li'); //直接调用
obj.ex1('li'); //方法调用
objnew = new Obj('li'); //构造器
ex1.call(objnew ,'li'); //call方法
ex1.apply(objnew ,['li']);  // apply 方法
  • 函数直接执行: 严格模式下是undefine,非严格模式是global context.(浏览器中是Window对象).
  • 函数做为对象的方法被调用: this绑定到对象.
  • 函数做为构造器被调用(new): this绑定到创建的对象
  • call / apply 调用时可指定this对象.