如何复制jquery函数?

时间:2015-07-01 00:32:16

标签: javascript jquery

如何编写类似于jquery的自己的函数? 例如:

$('parameter1').doSomething('parameter2);

function $(p1){
   var doSomething=function(p2){}; // this does not work to call....

}

2 个答案:

答案 0 :(得分:1)

尝试将$定义为全局window对象的属性;在obj函数中创建具有属性$()的对象doSomething,将window.$设置为对象obj;使用命名空间为window.$创建别名;从调用window.$

返回.doSomething具有属性$()的对象



window.$ = function $(args) {
  var obj = {
    doSomething: function doSomething(args) {
      // do stuff
      document.write(args + "\n");
      console.log(this);
      // return `window.$`
      return window.$
    }
  };
  // create alias for `window.$`
  var namespace = "abc";
  // set `window.$` to `obj`
  window.$ = window[namespace] = obj;
  if (args && window.$) {
    window.$.doSomething.call(window.$, args)
  };
  // return `window.$`
  return window.$
};

$("abc").doSomething("def");




答案 1 :(得分:0)

首先,您需要了解JavaScript中method chaining的概念。

上例中的$()方法不会返回任何内容。

即使这样做,从$()方法返回的对象也需要doSomething()方法。

例如:

$ = function(id) {
    return document.getElementById(id);
}

$('foobar').doSomething(); //assumes doSomething() exists on the returned object.