为啥这里click是null?

``` click

    var list = {
        init : function () {
            this.ms = "LST";
            this.dom = document.getElementById('btn');
            this.bindEvent();
            console.log(this);
        },
        bindEvent : function () {
            this.dom.onclick = this.showMessage; // 为啥这里onclick是null?
        },
        showMessage : function () {
            // alert(this.ms);
            console.log(this)

        }

    }

    list.init();

把showMessage写在上面,否则这个变量此时没有赋值,是null

在全局环境下的代码是在页面加载阶段从上到下一边加载一边执行的,这时处于代码下面的页面元素还没有加载完,访问不到。
要把script放在页面body下面,或者放到window.onload事件(页面加载完成后触发)中才可以

另外,你把this.showMessage函数设置为dom元素的onclick事件。
在由事件触发调用showMessage函数时,函数内的this指向的是触发事件的dom元素。不是list对象了。
需要对函数内的this绑定为list对象:
this.dom.onclick = this.showMessage.bind(this);