1.this是什么?
- 任何函数本质上都是通过某个对象来调用的,如果没有指定就是window
- 所有函数内部都有一个变量this
- 它的值是调用函数的当前对象
2.如何确定this的值?
- test(): window
- p.test(): p
- new test(): 新创建的对象
- p.call(obj): obj
例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>函数中的this</title>
</head>
<body>
<script>
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("yellow") // 这里的this又是谁? p(Person的实例)
p.getColor(); // 这里的this是?p(Person的实例)
var obj = {}
p.setColor.call(obj, "black"); // 这里的this是?obj
var test = p.setColor;
test() // 这里的this是? window
function fun1() {
function fun2() {
console.log(this);
}
fun2() // 这里的this是?window
}
fun1()
</script>
</body>
</html>