记录一下,以后复习用
例1:
class Test {
constructor() {
}
Print() {
console.log(this); // this 指向实例
}
}
var test = new Test();
test.Print();
控制台输出:Test{}
,说明 this 指向的是实例
例2:
class Test {
constructor() {
}
static Print() {
console.log(this); // this 指向类
}
}
Test.Print();
控制台输出:[Function: Test]
,说明 this 指向的是类
例3:
console.log(this);
控制台输出:{}
,说明 this 指向空对象
例4:
class Test {
constructor() {
}
Print(callback) {
callback("Yo~");
}
}
var test = new Test();
test.Print(function(data) {
console.log(this); // this 指向 global
});
控制台输出:
Object [global] {
global: [Circular],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] { [Symbol(util.promisify.custom)]: [Function] },
queueMicrotask: [Function: queueMicrotask],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(util.promisify.custom)]: [Function]
}
}
说明 this 指向 global
例5:
class Test {
constructor() {
}
Print(callback) {
callback("Yo~");
}
}
var test = new Test();
test.Print((data) => {
console.log(this); // this 指向空对象
});
控制台输出:{}
,说明 this 指向空对象
例6:
class Test {
constructor() {
this.Print(function(data) {
console.log(this); // this 指向的对象不存在
});
}
Print(callback) {
callback("Yo~");
}
}
var test = new Test();
控制台输出:undefined
,说明 this 指向的对象不存在。
例7:
class Test {
constructor() {
this.Print((data) => {
console.log(this); // this 指向实例
});
}
Print(callback) {
callback("Yo~");
}
}
var test = new Test();
控制台输出:Test {}
,说明 this 指向实例,lambda 表达式内的 this 指向上一级
网友评论