javascript 链接函数/函数使用 IIFE 表达式扩展
javascript chaining function / function extends using IIFE expression
我一直在寻找一种以直接方式扩展函数的方法,例如 C# extension method。
我已经尝试了我在这篇文章 Method Chaining in JavaScript 中找到的以下语句并且效果很好。
var FOO = function(){
this.whateverFunc = function(){
console.log("whatever func");
}
};
FOO.prototype.first = function(){
console.log("first func");
return this;
};
FOO.prototype.second = function(){
console.log("second func");
return this;
};
然后我可以链接它:
var foo = new FOO();
foo.first().second();
//Output
//first func
//second func
但是:我的项目有以下 "pattern":
var FOO = (function(){
var foo{
firstFunc: function(){
//implement
},
secondFunc: function(){
//implement
},
}
return foo;
}());
即使我不使用 IIFE,它也不起作用。
var FOO = function() { var foo{}; return foo; };
有没有办法在该模式中使用链接函数?我怎样才能做到这一点(如果可能的话!):
FOO.first().second();
谢谢。
之后代码的唯一问题
BUT: My projects has the following "pattern":
在 foo
声明中缺少 =
。
如果 IIFE 使用箭头函数,调用括号应该是 IIFE 的最后一部分,而不是在外括号内。
var FOO = (function() {
var foo = {
firstFunc: function() {
//implement
console.log(1);
return this
},
secondFunc: function() {
//implement
console.log(2);
return this
}
}
return foo;
})();
FOO.firstFunc().secondFunc()
我一直在寻找一种以直接方式扩展函数的方法,例如 C# extension method。
我已经尝试了我在这篇文章 Method Chaining in JavaScript 中找到的以下语句并且效果很好。
var FOO = function(){
this.whateverFunc = function(){
console.log("whatever func");
}
};
FOO.prototype.first = function(){
console.log("first func");
return this;
};
FOO.prototype.second = function(){
console.log("second func");
return this;
};
然后我可以链接它:
var foo = new FOO();
foo.first().second();
//Output
//first func
//second func
但是:我的项目有以下 "pattern":
var FOO = (function(){
var foo{
firstFunc: function(){
//implement
},
secondFunc: function(){
//implement
},
}
return foo;
}());
即使我不使用 IIFE,它也不起作用。
var FOO = function() { var foo{}; return foo; };
有没有办法在该模式中使用链接函数?我怎样才能做到这一点(如果可能的话!):
FOO.first().second();
谢谢。
BUT: My projects has the following "pattern":
在 foo
声明中缺少 =
。
如果 IIFE 使用箭头函数,调用括号应该是 IIFE 的最后一部分,而不是在外括号内。
var FOO = (function() {
var foo = {
firstFunc: function() {
//implement
console.log(1);
return this
},
secondFunc: function() {
//implement
console.log(2);
return this
}
}
return foo;
})();
FOO.firstFunc().secondFunc()