常见面试题
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值。
2、 foo(), 执行环境是window,
通过储存在foo的地址找到函数直接执行,
执行到this.bar时找到window下的bar值。