1、this是什么?
任何函数本质上都是通过某个对象调用的,如果没有指定,this就是window
所有函数内部都有一个变量是this,它的值是调用当前函数的对象
十分钟读懂 JavaScript 中的 this
2、如何确定this的值?
test() ----》 window
p.test() ----》> p
new test() ----》-> 新创建的对象
p.call(obj) -----》-> obj
========================================================
<script>
function Person(color) {
console.log("1、"+this);
this.color=color;
this.getColor=function () {
console.log("2、"+this)
return this.color;
};
this.setColor=function(){
console.log("3、"+this)
this.color=color;
};
}
Person("red");//this是谁? window
//1、[object Window]
var p=new Person("yellow");//this是谁?p
//1、[object Object]
p.getColor();//this是谁?p
//2、[object Object]
var obj = {};
p.setColor.call(obj,"black");//this是谁? obj
//3、[object Object]
var test=p.setColor();
test();//this是谁?window
function fn1() {
function fn2() {
console.log(this);
}
fn2();//this是谁? window
}
fn1();//this是谁?
//
var x = 2;
function test1(){
this.x = 1;
}
var o = new test1();
alert(x); //2
</script>