1.this存在于函数中
this:当前函数的执行对象,谁执行了this所在的函数,this就是谁
(必须是对象,不是对象,会自动转成对象)
1.在函数中的this(要注意到底是谁执行了this所在函数)
function fn(){
console.log(this);
}
fn(); //window
var obj = {};
obj.show = fn;
obj.show(); //obj
obnt.onclick = fn; //obtn
这里就可以看到那个对象执行了this所在的函数,this就指向谁
2.在计时器中的this
var obj = {
show:function () {
console.log(this)
}
}
var fn = obj.show;
setTimeout(fn,1000); //window
setTimeout(obj.show,1000) //window
//这里可以这么理解 (等价于)
function setTimeout(a,b){
a(); //也就说a还是window执行的
b
}
3.对象的方法赋值给另一个对象的方法
var obj = {
show:function () {
console.log(this)
}
}
var obj2 = {
name:"obj2"
}
obj2.show = obj.show;
obj2.show(); // obj2
obj.show(); //obj 此时this才指向obj
以上可以看出this没有指向obj的情况,因为this所在的函数没有被obj执行.
this:表示当前,这个,执行上下文,执行对象
this在面向对象中
new的机制:
1.强行给函数,加一个return
2.给return返回一个对象
3.修改函数中的this,改成new提供的return的后面的对象
4.return和后面的对象是隐式的,看不见但是存在
function Fn(){
this.name = "张三";
}
var b = new Fn();
console.log(b); //Fn {name: "张三"}
console.log(b.name) //张三