日期:2014-05-16  浏览次数:20347 次

如何理解方法中的this?
比如下面的程序:
JScript code

function classA(){
    this.x = 0;
    this.show = function(){
        alert(this.x);
    }
    this.show();
}
new classA();



这里应该如何理解show()函数中的this呢?我感觉可以有两种解释
1.show()是一个闭包,所以show()中的this是直接使用了外部classA()函数的this。此时,两个this是同一个变量。
2.show()函数被调用时会隐含传递一个调用它的对象的引用,也就是this,所以show()中的this只是和外部的this的值相同,担不是同一个变量。(Java中就是这种)

应该是那种解释呢?

------解决方案--------------------
只是传递一个引用
JScript code
            x = 1;
            function classA(){
                this.x = 0;
                this.show = function(){
                    alert(this.x);
                }
                this._show = function(){
                    this.show.call(window);
                }
                this._show();
            }
            var a = new classA();