定义将由用户实现的功能

时间:2010-11-17 09:27:43

标签: javascript function language-design

我有以下示例代码

var object = {
    userDefinedFunction : function(){
        //no implementation, this will be defined by the user
    }
}

我想要实现的是用户自己实现它:

object.userDefinedFunction = function(){
    alert("just testing");
}

我对此进行了测试并按照我的预期工作,我想知道的是:

  • 这是解决这类问题的javascript方法吗?
  • 让我们说userDefinedFunction必须实施,我该如何确定?我可以依赖以下内容,检查implemented,但我正在学习javascript,所以我想知道如何利用这种语言:

    userDefinedFunction : function(){
        implemented = false;
    }
    

谢谢。

3 个答案:

答案 0 :(得分:2)

我不知道这是否可行,但如果您的对象必须由用户以某种方式进行初始化,您可以在此函数中测试是否定义了userDefinedFunction并且如果没有则抛出异常

感觉是一个更清洁的实现的一个想法是让用户提供某种定义函数的配置对象,如:

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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()函数检查用户函数实现,因此您可以使用该对象执行第一次检查。