在类作用域javascript之外触发事件

在类作用域javascript之外触发事件,javascript,node.js,Javascript,Node.js,我有一门课: var psTesting = (function(){ var privatevariable; function setVariable(value){ privatevariable = value; console.log('the variable value is ' + value); } function dismiss ( callback ) { console.log('entro dismiss') if( callba

我有一门课:

var psTesting = (function(){

var privatevariable;

function setVariable(value){
    privatevariable = value;
    console.log('the variable value is ' + value);
}

function dismiss ( callback ) {
    console.log('entro dismiss')
    if( callback ) callback();
    if( this.onDismiss ) this.onDismiss();
}

return  {
    pVariable : function(val) {
        setVariable(val)
    }
}
})();

psTesting.pVariable(22);

psTesting.onDismiss = function(){
console.log('this is a onDismiss test');
}
我希望能够从类的外部启动onDismiss函数
psTesting.onDismiss()

我一直在尝试玩。打电话。申请。绑定东西,运气不好

谢谢,
PA

在内部保存对要返回的对象的引用,以便可以使用它访问添加到该对象的
.onDismiss()

var psTesting = (function() {

    var privatevariable;

    var obj = {
        pVariable: function(val) {
            setVariable(val)
        }
    }

    function setVariable(value) {
        privatevariable = value;
        console.log('the variable value is ' + value);
    }

    function dismiss(callback) {
        console.log('entro dismiss')
        if (callback) callback();
        if (obj.onDismiss) obj.onDismiss();
    }

    return obj;
})();

psTesting.pVariable(22);

psTesting.onDismiss = function() {
    console.log('this is a onDismiss test');
}

您正在尝试调用
psTesting.onDismiss()
?或者您正在尝试调用内部
dimis()
函数
psTesting.onDismiss()
可以直接调用。内部
dislose()
没有外部访问权限,因此无法调用它。要从外部调用它,您必须提供对它的公共访问,可能类似于您定义的
pVariable
。而不是类
pTesting
只是一个对象,其方法为
pVariable
,内部为
Disclease
函数
,此
指的是函数not
pTesting
。因此,
this.onDismiss
始终是未定义的。返回一个可以接受回调函数的
onDismiss
方法,以便您可以将其存储在
pTesting
范围内,并在需要时运行它。不清楚您试图做什么或请求帮助。请澄清。我想完成的是,无论何时在psTesting内部调用Dismise,都要在对象外部调用onDismiss