带有附加子函数的函数调用
Function call with additional sub functions
我在问自己,是否可以在js中调用一个函数,同时在里面有额外的子函数
fn(s);
fn.subfn(s);
例如,制作类似的utils
var s = "123";
string(s) // true
string.blank(s) // false
我认为可能是这样的:
function string(s) {
if(s) return typeof(s) === "string";
return {
blank: function(s) {
return s.trim().length === 0;
}
}
}
但每次调用string时,我都会重新定义blank-fn,可能会有糟糕的性能和糟糕的代码,或者我错了?
谢谢。
函数只是对象,所以是的,您可以只向它们添加属性:
function string(s) {
return typeof(s) === "string";
}
string.blank = function(s) {
return s.trim().length === 0;
}
这将允许您拨打
string(s);
string.blank(s);
正如您的示例所示。
对代码的评论:
当您调用string
时,您定义的函数返回一个对象,因此您需要将该函数调用为
string().blank(s);
这与你一开始展示的例子不同。
您可以创建一个Thing()类并实例化"Thing"对象,以防止重新定义函数。(Thing()而不是string()以防止任何类型的冲突。)
function Thing(s) {
return {
isString: function() {
return typeof(s) === "string";
},
isBlank: function() {
return s.trim().length === 0;
}
};
}
var t = new Thing("123");
t.isString() // true
t.isBlank() // false
http://jsfiddle.net/KKrsa/
你可以尝试这样的东西(未经测试):
function string(s) {
if(s) return typeof(s) === "string";
}
string.blank = function(s) {
return s.trim().length === 0;
}
不过,使用"string"作为函数名称可能会遇到问题,因为它可能与现有的string对象冲突。
相关文章:
- 从Javascript函数调用PHP函数
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 作为原型的函数的子函数
- 从匿名函数调用mouseover函数时失去作用域
- 使用评估函数调用 javascript 函数作为文本框 Asp.net 参数
- 从java脚本函数调用ruby函数
- eval调用函数,该函数调用定义函数的eval
- 调用子函数时阻止父jquery函数
- 从动态加载的内部函数调用Javascript函数
- 如何从另一个函数调用一个函数
- 如何从 JavaScript 函数调用 php 函数
- 从调用/子函数退出/中断主函数
- 调用子函数
- 在带有变量括号的对象中调用子函数
- 从子类函数调用超级函数
- React Native函数作用域(从子函数调用父函数)
- Javascript在window.opener.location.reload后从子函数调用父函数
- React父函数调用子函数'嵌套的组件DidMount函数
- Js的国际象棋调用子函数
- 如何在javascript中调用子函数