首页 > 代码库 > this的一点问题

this的一点问题

一般一个页面的JS代码我会放到一个对象里,像这样:

var App = {  header: $(‘#header‘),  showHello: function() {    alert(‘hello‘);        }}

 

这个对象里的方法会有调用的关系,当然会想到this,尤其在事件绑定的时候,因为js中的this是可变的,所以就会在方法开始出获取this,var _this = this;

var App = {  header: $(‘#header‘),  showHello: function() {    alert(‘hello‘);      }    init: function() {    var _this = this;    header.addEventListener(‘click‘, function() {      _this.showHello();    }, false)  }}

 

然后init方法在DOMContentLoaded事件触发。

window.addEventListener(‘DOMContentLoaded‘,  App.init, false);

 

我就理所当然这样写,然后就报错了。提示Uncaught TypeError: object is not a function 

一直不知道所以然,后来console.log(_this)一下,输出是window对象,console.log(this)也是一样的。

为什么指向了window没有指向App呢?有点疑惑。

 

然后修改成下面这样就可以了:

window.addEventListener(‘DOMContentLoaded‘, function() {    App.init();}, false);

 

this的一点问题