是否可以通过一次调用执行命名空间的所有功能?
经验:
var myApp = {
e : $('.js-box'),
addStyle : function(){
myApp.e.css('height','200');
},
warn : function(){
alert('WOOOOOoooOO');
}
};
myApp.addStyle();
myApp.warn();
使用上面的代码可以正常工作..
我们可以通过一次调用激活addStyle并警告函数吗?
我的尝试/想法:
var myApp = {
workAll : function(){
e : $('.js-box'),
addStyle : function(){
myApp.e.css('height','200');
},
warn : function(){
alert('WOOOOOoooOO');
}
}
};
myApp.workAll();
这不起作用..我怎么能这样做?
实时尝试:http://jsfiddle.net/C7JJM/82/
提前谢谢!
答案 0 :(得分:1)
自动调用所有函数看起来很困难,而不会使每个函数自行调用。但是使用自定义调用者,它几乎是可能的..只需在你的第一个函数中添加另一个名为workAll的函数即可。
var myApp = {
e : $('.js-box'),
addStyle : function(){
console.log("Add style called");
myApp.e.css('height','200');
},
warn : function(){
alert('WOOOOOoooOO!!!');
},
runAll : function(){
this.addStyle(); //call AddStyle
this.warn(); //call Warn
}
};
myApp.runAll();
在这里演示:
答案 1 :(得分:0)
尝试这个
//http://stackoverflow.com/questions/5999998/how-can-i-check-if-a-javascript-variable-is-function-type
function isFunction(functionToCheck) {
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}
function executeAll(ns){
if(ns){
for (property in ns) {
if (ns.hasOwnProperty(property)) {
var p = ns[property];
if (p != null && isFunction(p)) {
p();
}
}
}
}
}
var myApp = {
e : $('.js-box'),
addStyle : function(){
myApp.e.css('height','200');
},
warn : function(){
alert('WOOOOOoooOO');
}
};
executeAll(myApp)
但要注意传递给函数的参数
答案 2 :(得分:0)
var myApp = {
e : $('.js-box'),
addStyle : function(){
myApp.e.css('height','400');
},
warn : function(){
alert('WOOOOOoooOO');
} ,
addstyleall:function(){this.addStyle();this.warn();}
};
myApp.addstyleall();