// 全局中的this // 指的是window console.log(this);//window function abc() { console.log(this);//window } abc(); // 事件中的this // 什么是事件,当前这个函数,在addEventListener中被传入第二个参数,当前这个 // 函数有且仅有一个参数,是e,并且这个e是基于event的对象 var div=document.createElement("div"); document.body.appendChild(div); div.addEventListener("click",clickHandler); function clickHandler(e) { console.log(this);//div 是e.currentTarget,被侦听的对象 } // 混入this // call,apply,bind三种都可以混入对象,this将代表这个对象 function getsum(num) { this.a+=num; } var obj={a:0}; var obj1={a:10}; var obj2={a:20}; getsum.call(obj,10);//a=10 getsum.apply(obj1,[10]);//a=20 getsum.bind(obj2)(10);//a=30; // 对象中的this // 对象中的this就是指当前的这个对象 var obj3={ a:10, c:function () { // this--->obj3 console.log(this.a); } }; /* 类中的this /* class Box{ constructor(){ this.num=3; } play(){ // this->obj5 也就是通过new实例化的对象 // console.log(this.num); console.log(this===obj5); } } let obj5=new Box(); obj5.play(); let obj6=new Box(); obj6.play();*/ function Box() { this.num=3; } Box.prototype={ play:function () { console.log(this.num); } }; var obj7=new Box(); obj7.play();//this就是obj7