var obj={ func: function(){ console.log(this); }};obj.func();此处this指向obj本身。var obj = function(){};obj.PRototype.func = function(){ console.log(this);};var newObj = new obj();newObj.func();此种方式,this指向新创建的对象newObj;当一个function从不属于某个对象时,this指向全局对象window(严格模式下为undefined);
var obj={ func: function(){ (function(){console.log(this);})(); }};obj.func();此处的this由于function没用从属于某个对象,所以this指向全局对象window(严格模式下为undefined);在call和apply中,this指向传入的context;
var func = function(){ console.log(this);}var obj = {};func.call(obj);func.apply(obj);this指向obj;在dom上附加事件时,this指向触发事件的dom
<div onclick="alert(this)">text</div>this指向div这个dom;在es6(es2015)中,箭头函数不会改变this的指向。
新闻热点
疑难解答