this在JavaScript中的工作范围

this在JavaScript中的工作范围

在一个函数中,this的行为,取决于JavaScript函数的调用方式和定义方式,而不仅仅是看它如何被定义的。

var fullname = 'Fu';
var obj = {
   fullname: 'Yin',
   prop: {
      fullname: 'Gardenia',
      getFullname: function() {
         return this.fullname;
      }
   }
};

运行下面代码:

console.log(obj.prop.getFullname());

Gardenia  //输出 

运行下面代码:

var test = obj.prop.getFullname;

console.log(test());

Fu     //输出

运行下面代码:

console.log(test.call(obj.prop));

Gardenia //输出

运行下面代码:

console.log(test.call(obj));

Yin   //输出

运行下面代码:

console.log(test.call());

Fu   //输出

运行下面代码:

console.log(test.call(window));

Fu   //输出




总结:


Javascript的this遵从就近原则,不然就是window。


你可能感兴趣的:(JavaScript)