1. this是什么?
- 一个关键字, 一个内置的引用变量
- 在函数中都可以直接使用this
- this代表调用函数的当前对象
- 在定义函数时, this还没有确定, 只有在执行时才动态确定(绑定)的
2. 如何确定this的值? - test()
- obj.test()
- new test()
- test.call(obj)
*本质上任何函数在执行时都是通过某个对象调用的
function Person(color) {
console.log(this)
this.color = color;
this.getColor = function () {
console.log(this)
return this.color;
};
this.setColor = function (color) {
console.log(this)
this.color = color;
};
}
Person("red"); //this是谁? window
var p = new Person("yello"); //this是谁? p(实例)
p.getColor(); //this是谁? p
var obj = {};
p.setColor.call(obj, "black"); //this是谁?obj借用setColor作为自己的临时方法
var test = p.setColor;
test(); //this是谁? window
function fun1() {
function fun2() {
console.log(this);
}
fun2(); //this是谁? window
}
fun1();