EvEmitter是一款向浏览器类添加发布/订阅模式的消息事件处理插件

EvEmitter是一款向浏览器类添加发布/订阅模式的消息事件处理插件

EvEmitter 向浏览器类添加发布/订阅模式。它是Olical/EventEmitter的一个小版本。EventEmitter 功能齐全,使用广泛,而且很棒。

此 EvEmitter 仅具有基本事件功能来支持Isotope、Flickity、Masonry和imagesLoaded等库中的事件 API 。


API
// class inheritence
class MyClass extends EvEmitter {}

// mixin prototype
Object.assign( MyClass.prototype, EvEmitter.prototype );

// single instance
let emitter = new EvEmitter();

on 添加一个事件监听

emitter.on( eventName, listener )
eventName - String -事件名称

listener - Function

off 移除一个事件监听
emitter.off( eventName, listener )

once 添加一个只能触发一次的事件监听

emitter.once( eventName, listener )

emitEvent 触发一个事件

emitter.emitEvent( eventName, args )

eventName - String - 事件名称

args - Array -传给监听函数的参数

allOff 移除所有事件监听

emitter.allOff()

浏览器支持

EvEmitter v2 使用 ES6 功能,例如for...of 循环和类定义,因此它支持 Chrome 49+、Firefox 45+、Safari 9+ 和 Edge 13+。

对于较旧的浏览器支持,请使用EvEmitter v1。

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/EvEmitter.1.0.2.js"></script>
    <script type="text/javascript">
        // create event emitter
        var emitter = new EvEmitter();

        // listeners
        function hey(a, b, c) {
            console.log('Hey', a, b, c)
        }

        function ho(a, b, c) {
            console.log('Ho', a, b, c)
        }

        function letsGo(a, b, c) {
            console.log('Lets go', a, b, c)
        }

        // bind listeners
        emitter.on('rock', hey)
        emitter.on('rock', ho)
        // trigger letsGo once
        emitter.once('rock', letsGo)

        // emit event
        emitter.emitEvent('rock', [1, 2, 3])
        // => 'Hey', 1, 2, 3
        // => 'Ho', 1, 2, 3
        // => 'Lets go', 1, 2, 3

        // unbind
        emitter.off('rock', ho)

        emitter.emitEvent('rock', [4, 5, 6])
        // => 'Hey' 4, 5, 6
    </script>
    <style>
    </style>
</head>
<body>
    <div id="picker">
        颜色选择器
    </div>
</body>
</html>



立即下载EvEmitter.1.0.2.js查看所有js插件

网友评论0

程序员在线工具箱