Javascript 如何将setTimeout()与单例模块模式一起使用?

Javascript 如何将setTimeout()与单例模块模式一起使用?,javascript,Javascript,公共方法希望在一段时间后调用私有方法(将一些对象作为参数传递)。。。我们怎么做 想要这样的东西: var someClass = function(someObj) { var myPrivateMethod = function(someParam) { alert('i got ' + someObj + '!'); if (someParam) alert('and i also got ' + someParam + '!'); }

公共方法希望在一段时间后调用私有方法(将一些对象作为参数传递)。。。我们怎么做

想要这样的东西:

var someClass = function(someObj) {
    var myPrivateMethod = function(someParam) {
        alert('i got ' + someObj + '!');
        if (someParam) alert('and i also got ' + someParam + '!');
    }

    var myDearPublicMethod = function(someParam) {
        if (someParam) {
            //call myPrivateMethod with setTimeOut so that it gets the someObj (and someParam if provided)
        } else {
            myPrivateMethod(someParam);
        }
    }

    return {
        somePublicMethod : myDearPublicMethod
    }
}

someClass('something').somePublicMethod('somethingELSE');

调用调用该函数的匿名函数:

window.setTimeout(function(){
  localFunction(someObject);
}, 1000);

不清楚你的目标是什么

if (someParam) {
            //call myPrivateMethod with setTimeOut so that it gets both someObj and someParam
        } else {
            myPrivateMethod(someParam);
        }
如果在else分支中您刚刚验证了someParam为false、null或未定义,那么为什么在该分支中调用以someParam为参数的方法?分支之间的真正区别是什么?

如果调用时没有argum(即someClass('something').somePublicMethod()),那么直接调用私有方法;如果使用agrum调用,请使用setTimeout()调用私有方法。