在Javascript中编写真正的私有函数

时间:2013-09-09 05:27:01

标签: javascript module functional-programming

我想编写一个函数,让我可以控制它可以执行的API。 例如,如何在jQuery加载到页面后编写一个匿名函数,在没有jQuery的情况下私​​下执行:

var app = (function(){
  $("body").append("should not append because it does not recognize jQuery");
})();

而不是

var app = (function(){
  $("body").append("should append because jQuery is recognized");
})(jQuery);

1 个答案:

答案 0 :(得分:0)

扩展Nasser所说的,你可以(在本地)声明你想要禁止的东西作为未定义的变量:

// allow jQuery
(function () { // don't overwrite $ or jQuery, so it's allowed, basically
    $("body").append("should append because jQuery is recognized");
}());


// disallow jQuery
(function ($, jQuery) { // declare $ and jQuery as undefined in the function scope
    // the line below will throw an error, though
    $("body").append("should not append because it does not recognize jQuery");
}());

你可以进一步扩展这个,但这是一般的想法。