严格模式下的this
this.a = 9804;
console.log('this.a === window.a===',window.a); // 9804
function a() {
console.log(this.a);
};
a(); // 9804; 如果新增"use strict";代码前缀,由于this为undefined代码报错
xxxDom.click = () => { console.log(this) } // "use strict"下undefined; 箭头函数中原本指向window, 严格模式下函数内无法指向window除了setTimeout和setInterval中普通函数的this
构造函数的this
function constru(){
this.a = 'constru.a';
this.f2 = function(){
console.log(this.b);
return this.a;
}
}
var o2 = new constru();
o2.b = 'o2.b';
console.log(o2.f2()); // constru.a
其它
- 事件函数中指向事件对象
- 对象下的函数方法指向该对象
- 内联事件中的this一般指向事件对象,如下情况为undefined
<button onclick="alert((function(){'use strict'; return this})());">
内联事件处理
</button>
如何理解'use strict'对this的影响:
'use strict'之前定义好的对象,this是无法指向的,如window、内联事件中的事件对象在事件函数内部的严格模式....................