Javascript 定义将由用户实现的功能

Javascript 定义将由用户实现的功能,javascript,function,language-design,Javascript,Function,Language Design,我有下面的示例代码 var object = { userDefinedFunction : function(){ //no implementation, this will be defined by the user } } 我想要实现的是用户给出自己的it实现: object.userDefinedFunction = function(){ alert("just testing"); } 我对此进行了测试,并按照预期工作,我想知道的是:

我有下面的示例代码

var object = {
    userDefinedFunction : function(){
        //no implementation, this will be defined by the user
    }
}
我想要实现的是用户给出自己的it实现:

object.userDefinedFunction = function(){
    alert("just testing");
}
我对此进行了测试,并按照预期工作,我想知道的是:

  • 这就是javascript解决此类问题的方法吗
  • 假设必须实现
    userDefinedFunction
    ,如何确保这一点?我可以依赖以下内容,检查是否实现了
    ,但我正在学习javascript,因此我想知道如何利用该语言:

    userDefinedFunction : function(){
        implemented = false;
    }
    

谢谢。

我不知道这是否是正确的方法,但是如果您的对象必须由用户以某种方式初始化,您可以在此函数中测试
userDefinedFunction
是否已定义,如果未定义,则引发异常

一种感觉更干净的实现方法是让用户提供某种定义函数的配置对象,例如:

yourObject.initialize({
    userDefinedFunction: function() {}
});

我不知道这是否是正确的方法,但如果用户必须以某种方式初始化对象,则可以在此函数中测试
userDefinedFunction
是否已定义,如果未定义,则抛出异常

一种感觉更干净的实现方法是让用户提供某种定义函数的配置对象,例如:

yourObject.initialize({
    userDefinedFunction: function() {}
});

您可能会在默认实现中引发错误:

var object = {
    userDefinedFunction : function(){
        throw "userDefinedFunction must be implemented";
    }
}

或显示警报框,具体取决于您的应用程序。

您可以在默认实现中抛出错误:

var object = {
    userDefinedFunction : function(){
        throw "userDefinedFunction must be implemented";
    }
}
var object = {
    userDefinedFunction : undefined,
    anotoherDefinedFunc : undefined,

    /* ... */

    hasUserImplementedInterfaces : function() {
        if (typeof object.userDefinedFunction !== 'function') return false;
        if (typeof object.anotoherDefinedFunc !== 'function') return false;
        /*  ... */
        return true;
    }

};

console.log(object.hasUserImplementedInterfaces());
或显示警报框,具体取决于您的应用程序

var object = {
    userDefinedFunction : undefined,
    anotoherDefinedFunc : undefined,

    /* ... */

    hasUserImplementedInterfaces : function() {
        if (typeof object.userDefinedFunction !== 'function') return false;
        if (typeof object.anotoherDefinedFunc !== 'function') return false;
        /*  ... */
        return true;
    }

};

console.log(object.hasUserImplementedInterfaces());
hasUserImplementedInterfaces()
函数检查用户函数实现,以便您可以使用该对象作为第一次检查执行


hasUserImplementedInterfaces()
函数检查用户函数实现,以便您可以使用该对象作为第一个检查执行。

我不确定如何在javascript中执行此操作,但在java中,我会创建一个接口或扩展它,然后创建函数there@Daniel:是的,我的问题是如何在javascript中正确执行;)我知道,只是提出一些想法:我不知道如何在javascript中做到这一点,但在java中,我会创建一个接口或扩展它,然后创建函数there@Daniel:是的,我的问题是如何在javascript中正确执行;)我知道,只是提出一些想法:D+1我非常喜欢配置对象的想法——绝对是非常可扩展的。不过这取决于应用程序。+1我非常喜欢这种配置对象的想法-绝对是非常可扩展的。但这取决于应用程序。