Javascript'这个'问题

Mik*_*ike 2 javascript jquery

当setTimeout调用它的匿名回调时,为什么'me'和'this'未定义?

    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);
        };
    }
Run Code Online (Sandbox Code Playgroud)

解决方案:所选答案是正确的,谢谢.我的问题是简化了我遇到的真正问题,结果证明jQuery在click()方法中修改了'this',以便它指向相关的DOM元素.我创建了一个新的var,'me',以保持'this',并试图将其传递给click方法.我需要做的只是在click事件中使用'me',并让闭包保持对它的引用.将'me'传递给click()失败,原因与此示例中失败的原因相同,即click()没有预料到它.

Sea*_*ght 10

因为这:

function(me) { 
Run Code Online (Sandbox Code Playgroud)

做了:

function() {
Run Code Online (Sandbox Code Playgroud)

你很高兴去.

至于'为什么?' 部分,您正在定义一个带有被调用参数的匿名函数me.当setTimeout()函数调用时,它不传递任何参数,意思me是未定义的.me从参数列表中删除允许先前定义的me在函数内可见.