函数/ dom在javascript库中调用

时间:2015-12-30 05:27:27

标签: javascript

我正在尝试创建一个像jquery这样的javascript库。我得到了如何创建一个普通的库:

 var lib=lib||(function () {
       function privateFunction (alert ("hi");){};
       return {
          exampleAlert: function(input){
          alert(input);
       }
     }
    })();

这样称呼它:

lib.exampleAlert ("test");

这就像jquery

 $.ajax(stuffhere);

我的问题围绕着jquery。它可以调用dom,如$('。class')。hide(),并具有$ .ajax(stuffhere)等函数;在同一个图书馆。我怎样才能执行dom调用和常规函数调用,如上例库中的ajax调用?

提前致谢!!搜索的日子比我想承认的还多。

1 个答案:

答案 0 :(得分:0)

DOM在这里无关,它只取决于jQuery的实现 如果您询问同时进行lib()lib.func()调用,则可以执行以下操作以同时支持这两种函数类型:

var lib = function(sel) {
    return {
        object: document.querySelector(sel),
        text: function(val) {
           if (val === undefined) {
               return this.object.innerText;
           } else {
               this.object.innerText = val;
           }
        } 
    };        
};

lib.ajax = function() {
    console.log("AJAX imitation");
};

现在,您可以同时执行这两项操作:

lib("body").text("hi"); // jQuery-style setter
var text = lib("body").text(); // jQuery-style getter, returns "hi"

lib.ajax();

jQuery以完全相同的方式工作,但复杂程度要高出一百倍。