如果我有像
这样的功能namespace.functionName = function() {
/// some code
}
我如何在方法链中使用它,例如:
$("#element1").show().namespace.functionName()
上面的语句给出了一个错误,说“无法读取未定义的属性'functionName'”
答案 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项。