this是什么
this实际上是在函数被调用时才会被绑定,也就是说this具体指向什么,取决于你是怎么调用函数的
普通函数的this
function fn() {
console.log(this);
}
fn(); // 函数名前面没有".",所以输出的是window
var obj = { f1: fn }
obj.f1(); // 函数名前面有".",所以输出的是"."前面的对象
var c = new fn(); // fn函数
- 函数执行,首先看函数名前面是否有".",有的话, "."前面是谁this就是谁;没有的话this就是window 和函数在哪里执行的无关
- 对于 new 的方式来说,this 被永远绑定在了 c 上面,不会被任何方式改变 this
- call、apply、bind可以改变函数的this
箭头函数的this
箭头函数是没有this的,箭头函数中的this只取决于包裹箭头函数的的第一个普通函数的this
网友评论