<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
1.this是什么?
* 任何函数本质上都是通过某个对象来调用的
* 所有函数内部都有一个变量,叫做this。他的值时调用函数的当前对象
2.如何确定this的值?
* test() this是window
* p.test() this是window
* new test() this是创建的对象
* p.call(obj) this是obj
-->
<script>
function Person(color){
console.log(color)
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("white") //this是 P
P.getColor(); //this是P
var obj={}
P.setColor.call(obj,"black") //this是obj
var test =P.setColor
test(); //this是window,因为P.setColor 赋值给了test 那么test 就是是一个方法,而test() 就是window去调用
function fun1(){
function fun2(){
console.log(this)
}
fun2() //this是wwindow
}
fun1() //this是
</script>
</body>
</html>