【问题标题】:How to replicate a jquery function?如何复制一个jquery函数?
【发布时间】:2015-07-01 00:32:15
【问题描述】:

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

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

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

}

【问题讨论】:

标签: javascript jquery


【解决方案1】:

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

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");

【讨论】:

    【解决方案2】:

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

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

    即使有,从您的$() 方法返回的对象也需要有一个doSomething() 方法。

    例如:

    $ = function(id) {
        return document.getElementById(id);
    }
    
    $('foobar').doSomething(); //assumes doSomething() exists on the returned object.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多