# saber-emitter

> 一个适用于移动端的事件发射器，兼容node环境

Latest version **2.0.0** (published 2015-06-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install saber-emitter
pnpm add saber-emitter
yarn add saber-emitter
bun add saber-emitter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2015-06-18 |
| First published | 2015-03-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 5 |
| Maintainers | ecomfe |

## Links

- npm: https://www.npmjs.com/package/saber-emitter
- Repository: https://github.com/ecomfe/saber-emitter
- Homepage: https://github.com/ecomfe/saber-emitter#readme
- Issues: https://github.com/ecomfe/saber-emitter/issues
- npm.io page: https://npm.io/package/saber-emitter

## Recent versions

- 2.0.0 (latest) — 2015-06-18
- 2.0.0-beta.1 — 2015-04-17
- 2.0.0-alpha.1 — 2015-03-04

## README

saber-emitter
===

![Bower version](https://img.shields.io/bower/v/saber-emitter.svg?style=flat-square) [![NPM version](https://img.shields.io/npm/v/saber-emitter.svg?style=flat-square)](https://npmjs.org/package/saber-emitter) [![Build Status](https://img.shields.io/travis/ecomfe/saber-emitter.svg?style=flat-square)](https://travis-ci.org/ecomfe/saber-emitter) [![License](https://img.shields.io/npm/l/saber-emitter.svg?style=flat-square)](./LICENSE) [![EFE Mobile Team](https://img.shields.io/badge/EFE-Mobile_Team-blue.svg?style=flat-square)](http://efe.baidu.com)

一个适用于移动端的事件发射器，兼容 node 环境。

## Installation

通过 [edp](https://github.com/ecomfe/edp) 引入模块：

```sh
$ edp import saber-emitter
```

或者在 node 环境下 使用 `npm` 引入模块：

```sh
$ npm install saber-emitter --save
```

## Usage

```js
require(['saber-emitter'], function(Emitter) {
    var emitter = new Emitter();

    emitter.on('greeting', function(name) {
        console.log('Hello, ' + name + '!');
    });

    emitter.emit('greeting', 'Firede');
});
```

## API

创建 `Emitter` 实例

* _return_ `{Emitter}`

```js
var Emitter = require('saber-emitter');
var emitter = new Emitter();
```

### Methods

#### mixin(obj)

通过 `mixin` 将 `Emitter` 混入目标对象

* **obj** `{Object}` 目标对象
* _return_ `{Object}` 混入 Emitter 后的目标对象

```js
var obj = {};
Emitter.mixin(obj);

obj.emit('foo');
```

### Classes

#### on(event, listener)

挂载事件

* **event** `{string}` 事件名
* **listener** `{Function}` 监听器
* _return_ `{Emitter}`

```js
function listenerFn(name) {
    console.log('Hello ' + name);
}
emitter.on('say', listenerFn);
```

#### once(event, listener)

挂载只执行一次的事件

* **event** `{string}` 事件名
* **listener** `{Function}` 监听器
* _return_ `{Emitter}`

```js
emitter.once('say', listenerFn);
```

#### off([event[, listener]])

注销事件与监听器

* **event** `{string=}` 事件名
* **listener** `{Function=}` 监听器
* _return_ `{Emitter}`

```js
// `不传参数` 将注销当前实例的所有事件
emitter.off();

// 只传入 `event` 将注销该事件下挂载的所有监听器
emitter.off('say');

// 传入 `event` 与 `listener` 将只注销该监听器
emitter.off('say', listenerFn);
```

#### emit(event[, ...args])

触发事件

* **event** `{string}` 事件名
* **args** `{...*}` 传递给监听器的参数，可以有多个
* _return_ `{Emitter}`

```js
emitter.emit('say');
emitter.emit('say', 'hello');
emitter.emit('say', 'hello', 'world');
```

#### listeners(event)

返回指定事件的监听器列表

* **event** `{string}` 事件名
* _return_ `{Array}` 监听器列表

```js
var listeners = emitter.listeners('say');
```

#### setMaxListeners(number)

设置每个事件下，监听器的最大个数。为 `0` 时不限制，默认值是 `10`

* **number** `{number}` 监听器个数
* _return_ `{Emitter}`

```js
emitter.setMaxListeners(8);
```

---
_Source: https://npm.io/package/saber-emitter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
