JavaScript 的 this 原理

173 阅读1分钟

常见面试题

var obj = {
	foo: function() {
    	console.log(this.bar);
    },
    bar: 1
};
var foo = obj.foo;
var bar = 2;

obj.foo();  //结果为1
foo()		//结果为2

小编有话要说

  • 各位要明白一个原则,this指的是函数运行时所在的环境
  • 内存储存原则,如果是一个对象或者函数,那么现在内存开辟一片空间,然后这个空间的地址给然后把这个对象的内存地址赋值给变量

函数开始执行:

 1、 obj.foo(),执行环境是obj,
    通过储存在foo的地址找到此函数,并执行,
    执行到this.bar时找到执行环境obj的变量bar值。
 2foo(), 执行环境是window,
    通过储存在foo的地址找到函数直接执行,
    执行到this.bar时找到window下的bar值。