var x = 1; function test() { console.log(this.x); } test(); // 1
"use strict"; var x = 1; function test() { console.log(this.x); } test(); // undefined
function test() { console.log(this.x); } var obj = {}; obj.x = 1; obj.m = test; obj.m(); // 1
var x = 1; function test() { this.x = 2; } var obj = new test(); obj.x // 2 x //1
var x = 0; function test() { console.log(this.x); } var obj = {}; obj.x = 1; obj.m = test; //apply 的方式 obj.m.apply() // 0 obj.m.apply(obj); //1 //call 的方式 obj.m.call() // 0 obj.m.call(obj); //1
var a = { b: function() { var func = function() { console.log(this.c); } func.bind(this)(); }, c: 'hello' } a.b(); // hello console.log(a.c); // hello