Skip to content

重复添加事件问题 #1

@shimuash

Description

@shimuash

您好,我发现那个indexOf有点问题,不能避免重复添加事件

function indexOf(array, item) {
        if (array.indexOf) {
            return array.indexOf(item);
        } else {
            var result = -1;
            for (var i = 0, len = array.length; i < len; i++) {
                if (array[i] === item) {
                    result = i;
                    break;
                }
            }
            return result;
        }
    }

在添加事件的时候,使用indexOf(listeners, listener) === -1判断listeners没有listener才添加,但是listener可能为object,也可能为function,所以我修改为以下

function indexOf (array, item) {
    var result = -1
    item = typeof item === 'object' 
      ? item.listener 
      : item
    
    for (var i = 0, len = array.length; i < len; i++) {
      if (array[i].listener === item) {
        result = i
        break
      }
    }

    return result
  }

不知道分析的对不对?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions