代码中的payload是什么意思

在很多代码里面,某个方法的参数名称经常会用paylaod来命名。例如:

mutations: {
  increment (state, payload) {
    state.count += payload.amount
  }
}

之前一直纠结这个单词的意思,直接翻译的结果是“载荷”,结果又被这个中文词汇搞的一头雾水。为什么不用data之类的呢?“载荷”到底是个什么鬼?

通过搜索引擎大量的查找,看了几篇文章之后得出结论,载荷就是一批数据里面有用的那一部分。
举个例子:
你点了一份炸鸡,快递小哥的摩托车和人和炸鸡等全加起来是一个重量,这叫load(总装载量)。而你付费的那一部分重量就叫pay-load。也就是你点的炸鸡,“炸鸡”就是“载荷”。

小程序echart 动态刷新数据

先看官方实例代码:

import * as echarts from '../../ec-canvas/echarts';
let chart = null;
function initChart(canvas, width, height) {
  chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart);
  var option = {
    color: ['#37a2da', '#32c5e9', '#67e0e3'],
  
  };
  chart.setOption(option);
  return chart;
}

Page({
  data: {
    ec: {
      onInit: initChart
    }
  },
  onReady() {
    setTimeout(function () {
      // 获取 chart 实例的方式
      console.log(chart)
    }, 2000);
  }
});

简单解释一下,这个页面首先在全局声明了一个空的chart对象,然后在页面的data里面有一个ec对象,里面有个onInit属性。
ecahrt的初始化逻辑是在页面一进来的时候如果ec对象里面有函数就会被执行。如果ec里面配置了 lazyLoad: true就需要手动触发初始化方法。
如果你没有把图表封装成组件,向上面这样写就没问题。
但是如果你有多个页面公用了这一个文件就会导致一个问题,A页面初始化之后的全局chart这个变量会被B页面重新赋值。
如果从B页面通过返回按钮回到A页面的时候,这时候你再用setOption方法更新图表的时候就不是A页面一开始初始化的那个实例了。

如果有上面我说的这种业务需求就需要使用lazyLoad的方式,手动初始化echart,改成下面这样


Component({

 // data: {
 //   ec: {
 //     onInit: initChart //这种方式就是页面加载的时候echart会检测ec对象里面的值是是否有一个初始化方法
 //   }
 // },
  data: {

    ec: {
      lazyLoad: true
    }
    ...

然后写一个手动初始化的方法,例如这样:

Component({
  properties: {
    name: {
      type: String,
      value: '默认name'
    }
  },
  data: {
    ec: {
      lazyLoad: true
    }
  },
  methods: {
    init(title) {
      let name = this.data.name
      this.chartDom = this.selectComponent('#' + name)
      let optData = {
        title
      }
      this.chartDom.init((canvas, width, height) => {
        initChart(canvas, width, height,optData)
      });
    }
  }
})

像上面每次更新数据的时候就在页面里面去出发子组件的init方法,然后把数据通过参数传进来进行更新,这样做就不怕多个页面里面的echart实例冲突了。

HTML 特殊符号大全

❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©®™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉°✿ϟ☃☂✄¢€£∞✫★½✡×↙↘○◑⊕◣◢︼【】┅┇☽☾✚〓▂▃▄▅▆▇█▉▊▋▌▍▎▏↔↕☽☾の•▸◂▴▾┈┊①②③④⑤⑥⑦⑧⑨⑩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍿▓♨♛❖♓☪✙┉┋☹☺☻تヅツッシÜϡﭢ™℠℗©®♥❤❥❣❦❧♡۵웃유ღ♋♂♀☿☼☀☁☂☄☾☽❄☃☈⊙☉℃℉❅✺ϟ☇♤♧♡♢♠♣♥♦☜☞☝✍☚☛☟✌✽✾✿❁❃❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴✵✶✷✸✹✺✻✼❄❅❆❇❈❉❊†☨✞✝☥☦☓☩☯☧☬☸✡♁✙♆。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑•¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼☩☨☦✞✛✜✝✙✠✚†‡◉○◌◍◎●◐◑◒◓◔◕◖◗❂☢⊗⊙◘◙◍⅟½⅓⅕⅙⅛⅔⅖⅚⅜¾⅗⅝⅞⅘≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩⊰⊱⋛⋚∫∬∭∮∯∰∱∲∳%℅‰‱㊣㊎㊍㊌㊋㊏㊐㊊㊚㊛㊤㊥㊦㊧㊨㊒㊞㊑㊒㊓㊔㊕㊖㊗㊘㊜㊝㊟㊠㊡㊢㊩㊪㊫㊬㊭㊮㊯㊰㊙㉿囍♔♕♖♗♘♙♚♛♜♝♞♟ℂℍℕℙℚℝℤℬℰℯℱℊℋℎℐℒℓℳℴ℘ℛℭ℮ℌℑℜℨ♪♫♩♬♭♮♯°øⒶ☮✌☪✡☭✯卐✐✎✏✑✒✍✉✁✂✃✄✆✉☎☏➟➡➢➣➤➥➦➧➨➚➘➙➛➜➝➞➸♐➲➳⏎➴➵➶➷➸➹➺➻➼➽←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟↠↡↢↣↤↥↦↧↨➫➬➩➪➭➮➯➱↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿ┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬◤◥◄►▶◀◣◢▲▼◥▸◂▴▾△▽▷◁⊿▻◅▵▿▹◃❏❐❑❒▀▁▂▃▄▅▆▇▉▊▋█▌▍▎▏▐░▒▓▔▕■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯㋀㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼㏽㏾㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍘☰☲☱☴☵☶☳☷☯
特殊符号
♠♣♧♡♥❤❥❣♂♀✲☀☼☾☽◐◑☺☻☎☏✿❀№↑↓←→√×÷★℃℉°◆◇⊙■□△▽¿½☯✡㍿卍卐♂♀✚〓㎡♪♫♩♬㊚㊛囍㊒㊖Φ♀♂‖$@*&#※卍卐Ψ♫♬♭♩♪♯♮⌒¶∮‖€£¥$
编号序号
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⓪❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵
数学符号
﹢﹣×÷±/=≌∽≦≧≒﹤﹥≈≡≠=≤≥<>≮≯∷∶∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙√∟⊿㏒㏑%‰⅟½⅓⅕⅙⅛⅔⅖⅚⅜¾⅗⅝⅞⅘≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩⊰⊱⋛⋚∫∬∭∮∯∰∱∲∳%℅‰‱øØπ
爱心符号
♥❣ღ♠♡♤❤❥
标点符号
。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑•¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼❝❞
单位符号
°′″$¥〒¢£%@℃℉﹩﹪‰﹫㎡㏕㎜㎝㎞㏎m³㎎㎏㏄º○¤%$º¹²³
货币符号
€£Ұ₴$₰¢₤¥₳₲₪₵元₣₱฿¤₡₮₭₩ރ円₢₥₫₦zł﷼₠₧₯₨Kčर₹ƒ₸¢
箭头符号
↑↓←→↖↗↘↙↔↕➻➼➽➸➳➺➻➴➵➶➷➹▶►▷◁◀◄«»➩➪➫➬➭➮➯➱⏎➲➾➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨↚↛↜↝↞↟↠↠↡↢↣↤↤↥↦↧↨⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇖⇗⇘⇙⇜↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹☇☈↼↽↾↿⇀⇁⇂⇃⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪↺↻⇚⇛♐
符号图案
✐✎✏✑✒✍✉✁✂✃✄✆✉☎☏☑✓✔√☐☒✗✘ㄨ✕✖✖☢☠☣✈★☆✡囍㍿☯☰☲☱☴☵☶☳☷☜☞☝✍☚☛☟✌♤♧♡♢♠♣♥♦☀☁☂❄☃♨웃유❖☽☾☪✿♂♀✪✯☭➳卍卐√×■◆●○◐◑✙☺☻❀⚘♔♕♖♗♘♙♚♛♜♝♞♟♧♡♂♀♠♣♥❤☜☞☎☏⊙◎☺☻☼▧▨♨◐◑↔↕▪▒◊◦▣▤▥▦▩◘◈◇♬♪♩♭♪の★☆→あぃ£Ю〓§♤♥▶¤✲❈✿✲❈➹☀☂☁【】┱┲❣✚✪✣✤✥✦❉❥❦❧❃❂❁❀✄☪☣☢☠☭ღ▶▷◀◁☀☁☂☃☄★☆☇☈⊙☊☋☌☍ⓛⓞⓥⓔ╬『』∴☀♫♬♩♭♪☆∷﹌の★◎▶☺☻►◄▧▨♨◐◑↔↕↘▀▄█▌◦☼♪の☆→♧ぃ£❤▒▬♦◊◦♠♣▣۰•❤•۰►◄▧▨♨◐◑↔↕▪▫☼♦⊙●○①⊕◎Θ⊙¤㊣★☆♀◆◇◣◢◥▲▼△▽⊿◤◥✐✌✍✡✓✔✕✖♂♀♥♡☜☞☎☏⊙◎☺☻►◄▧▨♨◐◑↔↕♥♡▪▫☼♦▀▄█▌▐░▒▬♦◊◘◙◦☼♠♣▣▤▥▦▩◘◙◈♫♬♪♩♭♪✄☪☣☢☠♯♩♪♫♬♭♮☎☏☪♈ºº₪¤큐«»™♂✿♥ ◕‿-。 。◕‿◕。
希腊字母
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζνξοπρσηθικλμτυφχψω
俄语字母
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя
汉语拼音
āáǎàōóǒòēéěèīíǐìūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ
中文字符
零壹贰叁肆伍陆柒捌玖拾佰仟万亿吉太拍艾分厘毫微卍卐卄巜弍弎弐朤氺曱甴囍兀々〆のぁ〡〢〣〤〥〦〧〨〩㊎㊍㊌㊋㊏㊚㊛㊐㊊㊣㊤㊥㊦㊧㊨㊒㊫㊑㊓㊔㊕㊖㊗㊘㊜㊝㊞㊟㊠㊡㊢㊩㊪㊬㊭㊮㊯㊰㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉
日文平假名片假名
ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ゠ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
制表符
─ ━│┃╌╍╎╏┄ ┅┆┇┈ ┉┊┋┌┍┎┏┐┑┒┓└ ┕┖┗ ┘┙┚┛├┝┞┟┠┡┢┣ ┤┥┦┧┨┩┪┫┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╪ ╫ ╬═║╒╓╔ ╕╖╗╘╙╚ ╛╜╝╞╟╠ ╡╢╣╤ ╥ ╦ ╧ ╨ ╩ ╳╔ ╗╝╚ ╬ ═ ╓ ╩ ┠ ┨┯ ┷┏ ┓┗ ┛┳ ⊥ ﹃ ﹄┌ ╮ ╭ ╯╰
皇冠符号
♚ ♛ ♝ ♞ ♜ ♟ ♔ ♕ ♗ ♘ ♖ ♟
emoji符号
🌹🍀🍎💰📱🌙🍁🍂🍃🌷💎🔫🏀⚽⚡👄🔥

小程序1rpx边框在部分ios设备下显示不全

原因:当标签的父容器宽度(单位rpx)÷2的值为偶数或偶数.5的时候会出现该bug,那么我们可以推到出用200.5*2=401,302*2=604等等都会重现这个bug
解决方案:
第一种方式是设置标签父容器的宽度到无bug值,即(奇数或奇数.5)*2,例如281*2rpx,281.5*2rpx可以解决;(有时候这个也不一定解决)
第二种方式是补充像素单位:

wxml中为有问题的标签旁边增加space的view后如下:

<view class='label-con'>
    <view class='space'></view>
    <view class='label'>a</view>
    <view class='label'>b</view>
    <view class='label'>c</view>
    <view class='label'>d</view>
</view>

wxss中增加space类为:

    .space{
        width: 1rpx;
        height: 100%;
        float: left;
    }

使用纯css制作一个简单的幻灯片效果

思路:使用css的帧动画来实现

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>纯css幻灯片</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        * {
            margin: auto;
            padding: 0;
        }

        div {
            margin-top: 100px;
            width: 100px;
            border: solid 1px #ccc;
            overflow: hidden;
        }

        ul {
            float: left;
            display: flex;
        }

        ul li {
            width: 100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            list-style: none;
            animation: slide 5s ease 0s infinite normal both;
        }

        /*停顿(开始)>左移>停顿>左移>归零(结束)  此为三张图片  多一张图片加一个停顿+左移*/
        @keyframes slide {
            0% {
                transform: translateX(0%);
            }

            16.7% {
                transform: translateX(0%);
            }

            33.3% {
                transform: translateX(-100%);
            }

            50% {
                transform: translateX(-100%);
            }

            66.7% {
                transform: translateX(-200%);
            }

            83.3% {
                transform: translateX(-200%);
            }

            100% {
                transform: translateX(0%);
            }
        }
    </style>
</head>

<body>
    <div>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </div>
</body>

</html>

当你和老板或者同事发生意见分歧的时候,如何处理?

这个问题出自世界最常见的50道面试题(the 50 Most Common Interview Questions)
这个问题要测试你的有两个方面:你在职场上的政治常识和你是否敢说话。

职业生涯策略专家Mary Grace Gardner说:如果你的老板犯了一个错误,或者你有一个更好的点子,他一定是希望你能说出来的,但要注意你的表达方式,这非常重要。

职业生涯教练Angela Copeland说:这个问题最好的回答方式就是用一个例子来说明这个分歧。说服你的老板按照你的方式做一次尝试,最终让所有人都获得好处,包括你的领导。

例如:在一家的公司里面,你觉得远程办公对你的公司的企业文化有提升,但是老板开始可是并不赞成的。你就努力的去说服他一定要做一次尝试。结果效果非常好。

这个问题考验的不是让你如何说出老板的想法很差,而且你处理分歧的方式。

网页标准和标准制定机构重要性

其实任何行业都应该由一个机构来制定行业标准,例如汽车行业,手机行业等…
比如汽车有各种车型,长宽高都在一个标准的范围内,这样停车位就比较好设计,还有轮胎标准,座椅标准等等。
手机的屏幕分辨率,按键,系统都有一定的标准。如果手机尺寸固定为3种的话,是不是手机壳和手机膜的厂商最高兴了,这样就更容易设计产品,也节省了成本。

网页标准是由w3c组织制定的,最主要的工作就是统一浏览器规范,最小各个浏览器之间的差距。
在浏览器兼容性最差的年代 ie6和firefox和chrome的差别真的是让我们这些早期的前端工程师伤透了脑筋。80%的工作时间都浪费在调试兼容性上面了。
所以标准制定的越好,对于开发人员来说受益是最大的,开发时间变快了,bug变少了。对于使用者来说用户体验也更一致了。

渐进式增强和优雅降级区别

这两个概念的结果是一样的,区别就是一开始你从完整版入手还是基础版入手。
举个例子,玩pc游戏的时候经常会在游戏图像设置里面选择特效级别,高中低。
渐进增强(progressive enhancement)- 就是开发页面的时候先从一个低特效开始,然后根据更高版本的浏览器逐渐添加更高级别的效果。
优雅降级(graceful degradation)- 先从最高的特效开始开发,然后针对低版本浏览器做优化
应用场景:
例如ie6不支持阴影,火狐支持。
渐进增强就是先不保证ie6正常显示,然后再判断,如果当前浏览器支持阴影则显示。
优雅降级反之。

手写事件管理类(EventBus)-简易的观察者模式

因为小程序目前的基础库版本不支持全局的事件订阅和触发,只能自己写一个了,不然小程序里面没有vuex之类的东西用还真是不方便。

/* 简易的观察者实现
 * @Author: Liuxiaofan 
 * @Date: 2018-10-25 16:24:51 
 * @Last Modified by: Liuxiaofan
 * @Last Modified time: 2018-10-25 17:24:17
 */
class EventBus {
    constructor() {
        this.events = {}
    }
    getEvents() {
        return this.events || (this.events = {});
    }
    getListeners(eventName) {
        let events = this.getEvents();
        return events[eventName] || (events[eventName] = []);
    }
    on(eventName, fn, time) {
        time = typeof (time) == 'number' ? time : -1;
        time = time >= -1 ? time : -1;
        var listeners = this.getListeners(eventName);
        var listenerWrapper = {
            listener: fn,
            time: time,
        };
        listeners.push(listenerWrapper);
        return this;
    }
    off(eventName) {
        var events = this.getEvents();
        events[eventName] = [];
    }
    removeListener(eventName, listener) {
        var listeners = this.getListeners(eventName);
        for (var i = 0; i < listeners.length; i++) {
            if (listeners[i].listener == listener) {
                delete listeners[i];
            }
        }
    }
    trigger(eventName, args) {
        var listeners = this.getListeners(eventName);
        for (var i = 0; i < listeners.length; i++) {
            var listener = listeners[i];
            if (listener.time != -1) {
                listener.time--;
            }
            if (listener.time == 0) {
                this.removeListener(eventName, listener.listener);
            }

            listener.listener.apply(this, args || []);
        }
    }
    emit(eventName) {
        var args = Array.prototype.slice.call(arguments, 1);
        return this.trigger(eventName, args);
    }
}
export default EventBus