this 关键字
var f = function () {
console.log(this.x);
}var f = function () {
console.log(this.x)
}
var x = 1
var obj = {
f: f,
x: 2
}
// window 环境
f() // 1
// obj 环境
obj.f() //2Last updated
var f = function () {
console.log(this.x);
}var f = function () {
console.log(this.x)
}
var x = 1
var obj = {
f: f,
x: 2
}
// window 环境
f() // 1
// obj 环境
obj.f() //2Last updated
this === window // true
function f () {
console.log(this === window)
}
f() // truevar Obj = function (p) {
this.p = p
}var o = new Obj('Hello World!');
o.p // "Hello World!"var obj ={
foo: function () {
console.log(this);
}
};
obj.foo() // obj// 情况一
(obj.foo = obj.foo)() // window
// 情况二
(false || obj.foo)() // window
// 情况三
(1, obj.foo)() // window// 情况一
(obj.foo = function () {
console.log(this);
})()
// 等同于
(function () {
console.log(this);
})()
// 情况二
(false || function () {
console.log(this);
})()
// 情况三
(1, function () {
console.log(this);
})()var a = {
p: 'Hello',
b: {
m: function() {
console.log(this.p);
}
}
};
a.b.m() // undefinedvar b = {
m: function() {
console.log(this.p);
}
};
var a = {
p: 'Hello',
b: b
};
(a.b).m() // 等同于 b.m()var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b.m;
hello() // undefinedvar hello = a.b;
hello.m() // Hello