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