如何链接一个具有命名空间的方法?

时间:2014-09-11 08:09:15

标签: javascript jquery method-chaining

如果我有像

这样的功能
namespace.functionName = function() { 
   /// some code
 }

我如何在方法链中使用它,例如:

$("#element1").show().namespace.functionName()

上面的语句给出了一个错误,说“无法读取未定义的属性'functionName'”

2 个答案:

答案 0 :(得分:0)

坦率地说,你所做的尝试没有任何意义。但是为了使函数链发生,你可以通过

来实现
var namespace = {};

namespace.functionName = function() { 
   alert("hi");
 }

function show() {

    alert("do 1");
    /*just return the parent object of the namespace 
      assuming the namespace to be in global scope */
    return window;

}

show().namespace.functionName();

注释

方法链接的工作原理是我们调用的第一个函数返回一个对象,该对象公开了在链中调用的其他方法。因此,在您要解释的情况下,如果不编辑您指定的show()方法,则无法进行解释。

或者正如@RobG建议的那样,您可以创建一个包装函数来调用所需的函数,然后返回必要的链接对象。

答案 1 :(得分:0)

对于jQuery你可以做到

var yourNamespace = {};
yourNamespace.myFunction = function() { console.log("hey"); };
jQuery.fn.namespace = yourNamespace;

然后像

一样疯狂
$("a:first").show().namespace.myFunction();

但请注意,函数的上下文可能是命名空间对象,而不是jQuery项。