EDIT:这是not about fat arrows.这也不是把this分传给IIFE分.这是一个与运输相关的问题.
因此,我为我正在开发的一个小应用程序创建了一个简单的wine 吧sub.我在ES6中编写它是为了使用spread/rest并避免一些头痛.我用npm和gulp设置它来传输它,但这让我抓狂.
我把它做成了一个浏览器库,但意识到它可以在任何地方使用,所以我决定让它与JS和AMD兼容.
下面是我的代码的精简版本:
(function(root, factory) {
if(typeof define === 'function' && define.amd) {
define([], function() {
return (root.simplePubSub = factory())
});
} else if(typeof module === 'object' && module.exports) {
module.exports = (root.simplePubSub = factory())
} else {
root.simplePubSub = root.SPS = factory()
}
}(this, function() {
// return SimplePubSub
});
但无论我try 什么(比如将this设为变量并传递它),它都会将其设置为undefined.
}(undefined, function() {
这可能与巴贝尔不知道this会是什么,然后把它运走有关,但我还有其他方法吗?
UPDATE:通过}((window || module || {}), function() {
而不是this似乎有效.但我不确定这是不是最好的方法.