English 中文(简体)
Javascript中的this问题
原标题:
  • 时间:2009-01-27 02:20:24
  •  标签:

当setTimeout调用其匿名回调时,为什么我和这个未定义?

    var gMyObj = new MyObj();
    gMyObj.myFunc();

    function MyObj() {
        this.myFunc = function () {
            var me = this;
            alert(me.constructor);  // defined
            setTimeout(function(me) {  
                      alert(me.constructor); // undefined
                  }, 100);
        };
    }

分辨率:所选答案是正确的,谢谢。我的问题是对我实际遇到的问题进行简化,后来发现jQuery在click()方法中修改this的方式,使它指向相关的DOM元素。我创建了一个新的变量me来保存this,并尝试将其传递给click方法。我只需要在click事件中使用me,并让闭包保留对它的引用即可。将me传递给click()方法失败了,因为与此示例相同,即click()没有期望它。

最佳回答

因为这个:

function(me) { 

制作它:

function() {

而且你准备好了。

关于“为什么?”部分,您正在定义一个名为me的参数的匿名函数。 当setTimeout()调用该函数时,它不传递任何参数,这意味着me将未定义。 从参数列表中删除me允许预先定义的me在函数内可见。

问题回答

暂无回答




相关问题
热门标签