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。

-----------------------------------------------------------------------
Simple is Beautiful,Less is More.
--FuGardenia
原文地址:https://www.cnblogs.com/yunqianduan/p/3989848.html