Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在另一个公共方法下添加公共方法?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在另一个公共方法下添加公共方法?

Javascript 如何在另一个公共方法下添加公共方法?,javascript,jquery,Javascript,Jquery,我正在开发一个包含大量JavaScript和jQuery代码库的网站,我正在尝试为它提供一个更有条理的插件式结构。我演示了如何使用自动执行的匿名函数来帮助定义作用域,它还允许您的库使用“window.namespace=window.namespace |{}”技术跨文件扩展 例如: //Self-Executing Anonymous Function: (function( skillet, $, undefined ) { //Private Property var i

我正在开发一个包含大量JavaScript和jQuery代码库的网站,我正在尝试为它提供一个更有条理的插件式结构。我演示了如何使用自动执行的匿名函数来帮助定义作用域,它还允许您的库使用“window.namespace=window.namespace |{}”技术跨文件扩展

例如:

//Self-Executing Anonymous Function:
(function( skillet, $, undefined ) {

    //Private Property
    var isHot = true;

    //Public Property
    skillet.ingredient = "eggs";

    //Public Method
    skillet.fry = function() {
        // do stuff...
    };

    //Private Method
    function addItem( item ) {
        // do stuff...
    }    
}( window.skillet = window.skillet || {}, jQuery ));
演示:

我的问题是,如何在skillet.fry()下添加公共方法。这样我就可以给skillet.fry.cancel()之类的东西打个电话


或者,如果有更好的方法,我愿意接受建议。

您可以尝试类似的方法。它允许您声明在关闭
cancel()
时可用的其他变量(以及


你可以试试这样的。它允许您声明在关闭
cancel()
时可用的其他变量(以及


好的,您可以向函数添加属性(只需编写
skillet.fry.something=function(){…}
),因为函数只是另一种类型的对象,它可以定义其他属性,就像其他对象一样。但在我看来,这看起来相当尴尬。你有一个
向煎锅添加新功能的部分。。你不能把它添加到那里吗?我可以按照@raina77ow所说的做,但是它不允许我在skillet.fry中定义变量,并且仍然可以在skillet.fry.something()中访问它。你会这样做吗?好吧,你可以给函数添加属性(只需编写
skillet.fry.something=function(){…}
),as函数只是另一种类型的对象,它可以像其他对象一样定义其他属性。但在我看来,这看起来相当尴尬。你有一个
向煎锅添加新功能的部分。。你不能把它添加到那里吗?我可以按照@raina77ow所说的做,但是它不允许我在skillet.fry中定义变量,并且仍然可以在skillet.fry.something()中访问它。会吗?对不起,我忘记初始化
了。如果您将其初始化为空(或任何)对象,它将工作。我将更新代码以反映这一点。为了可读性起见,是否可以在skillet.fry函数之外添加skillet.fry.cancel()?是的,您可以按照raina77ow所说的做,只需执行
skillet.fry.cancel=function(){}
。函数是对象,可以像任何其他对象一样具有属性。对不起,我忘记初始化那个
。如果您将其初始化为空(或任何)对象,它将工作。我将更新代码以反映这一点。为了可读性起见,是否可以在skillet.fry函数之外添加skillet.fry.cancel()?是的,您可以按照raina77ow所说的做,只需执行
skillet.fry.cancel=function(){}
。函数是对象,可以像任何其他对象一样具有属性。
skillet.fry = (function() {
    var that = {};

    that.cancel = function() {
        //...
    }

    return that;
})();