returns 值并提供对内部定义方法的访问的函数
Function that returns value and provides access to inside-defined methods
如何让全局对象 myLib
同时成为接受参数和 returns 布尔值 (true/false) 的库式函数,我们称它为其他可公开访问的方法的容器,例如:
window.myLib = (function(w){
//...
function on(arg, callback){
}
return function(arg1, arg2){
//returns true or false, based on calculation on arg1, arg2...
}
})(window)
myLib('something', 'somethingother')// will return true or false
myLib.on('somecondition', function(){})// note the on() method-that's what I'm trying to accomplish
或者我应该问,这可能吗?
可以这样
window.myLib = (function(w){
//...
function on(arg, callback){
}
function main(arg1, arg2){ // main is an arbitrary name with no significance
//returns true or false, based on calculation on arg1, arg2...
}
main.on = on;
return main;
})(window)
javascript 中的函数是对象,因此您实际上可以向它们添加方法。来自 mdn:
The Function constructor creates a new Function object. In JavaScript
every function is actually a Function object.
window.myLib = (function(window){
function myLib(a, b) {
console.log(a, b);
}
myLib.method1 = function (a) {
console.log(a);
}
myLib.method2 = function (a, b) {
console.log(a + b);
}
return myLib;
})(window);
现在您可以同时使用函数和附加方法:
myLib(1, 2);
myLib.method1(5);
myLib.method2(5, 3);
如何让全局对象 myLib
同时成为接受参数和 returns 布尔值 (true/false) 的库式函数,我们称它为其他可公开访问的方法的容器,例如:
window.myLib = (function(w){
//...
function on(arg, callback){
}
return function(arg1, arg2){
//returns true or false, based on calculation on arg1, arg2...
}
})(window)
myLib('something', 'somethingother')// will return true or false
myLib.on('somecondition', function(){})// note the on() method-that's what I'm trying to accomplish
或者我应该问,这可能吗?
可以这样
window.myLib = (function(w){
//...
function on(arg, callback){
}
function main(arg1, arg2){ // main is an arbitrary name with no significance
//returns true or false, based on calculation on arg1, arg2...
}
main.on = on;
return main;
})(window)
javascript 中的函数是对象,因此您实际上可以向它们添加方法。来自 mdn:
The Function constructor creates a new Function object. In JavaScript every function is actually a Function object.
window.myLib = (function(window){
function myLib(a, b) {
console.log(a, b);
}
myLib.method1 = function (a) {
console.log(a);
}
myLib.method2 = function (a, b) {
console.log(a + b);
}
return myLib;
})(window);
现在您可以同时使用函数和附加方法:
myLib(1, 2);
myLib.method1(5);
myLib.method2(5, 3);