this.removeEventListener = function (obj, ename, func) {
var store = obj[this.addEventListener.pre + ename];
if (!store) {
return;
}
var i = store.indexOf(func);
if (i < 0) {
return;
}
obj[this.addEventListener.pre + ename].splice(i, 1);
};
this.addEventListener = function (obj, enames) {
if (arguments.length < 2) {
return;
}
if (!this.addEventListener.pre) {
this.addEventListener.pre = "god_" + Math.random() * Number.MAX_VALUE;
}
if (typeof arguments[1] == "string") {
var ename = arguments[1];
var fullname = "on" + ename;
if (!(fullname in obj)) {
var store = this.addEventListener.pre + ename;
if (!obj[store]) {
obj[store] = [];
}
Object.defineProperty(obj, fullname, {
set: function (v) {
obj[store].push(v);
}
});
var notice = ename === "notice" ? "notice" : "notice" + ename;
obj[notice] = function () {
for (var i = 0; i < obj[store].length; i++) {
try {
obj[store][i].apply(obj, arguments);
} catch (e) {
console.log(e.message);
}
}
};
}
}
if (typeof arguments[2] === "string") {
var narguments = [obj];
for (var i = 2; i < arguments.length; i++) {
narguments.push(arguments[i]);
}
this.addEventListener.apply(this, narguments);
}
};

向JS对象添加和删除事件的更多相关文章

  1. 原生JS动态添加和删除类

    原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...

  2. 数组练习:各种数组方法的使用&&事件练习:封装兼容性添加、删除事件的函数&&星级评分系统

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. js 为对象添加和删除属性

    对于一个普通的js对象: var obj = { name:"mary", age:21 } 如果我们要对它添加新属性的话可以使用下列方式: obj.address = " ...

  4. 在js中为对象添加和删除属性

    对于一个普通的js对象: var obj = { name:"mary", age:21 } 如果我们要对它添加新属性的话可以使用下列方式: obj.address = " ...

  5. vue.js简单添加和删除

    这只是个简单的添加和删除,没有连接后台数据的 <%@ page language="java" contentType="text/html; charset=UT ...

  6. js动态添加和删除标签

    html代码 <h1>动态添加和删除标签</h1> <div id="addTagTest"> <table> <thead& ...

  7. 关于给javascript对象添加、删除、修改对象的属性

    以下是自己总结的几种方法 利用动态特性 function Person(){}; var person = new Person(); person.name = 'yy'; person.gende ...

  8. bootstrap table 生成的表格里动态添加HTML元素按钮,JS中添加点击事件,点击没反应---解决办法

    bootstraptable中onExpandRow属性---js  方法添加的 html代码,然后给这代码里面的 元素 添加 事件,却获取不该元素.(称之为未来元素),由于是未来的 所以现在没有这个 ...

  9. JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())

    var box = document.getElementById("box"); box.id = "pox"; 将id = “box”,改为id = “po ...

随机推荐

  1. Lua JSONRPC学习笔记

    JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...

  2. RDIFramework.NET ━ 9.14 数据库连接管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.14  数据库连接管理 -Web部分 我们经常可以看到很多软件直接把数据库连接字符串放在软件执行目录下的配置文件中,这种直接把 ...

  3. django使用gmail

    POSTED ON 02 JUL 2007 IN DEVELOPMENT DJANGO PYTHON WEBDid a bit of running around today to get Djang ...

  4. SqlServer数据库端口默认是1433吗?

    1433端口,是SQL Server默认的端口,SQL Server服务使用两个端口:TCP-1433.UDP-1434.其中1433用于供SQL Server对外提供服务,1434用于向请求者返回S ...

  5. c# 中get和post的方法

    用GET发送数据则用REQUEST.QUERYSTRING[''ID'']接收 一.request.aspx 二.request.aspx.cs 三运行效果: 以下是数据发送的途径http://loc ...

  6. js setInterval

    var monitorInterval = null;    //检索cs 是否处理完成 开始: monitorInterval = setInterval(function () { CheckCS ...

  7. 查看Linux内核版本命令

    一.查看Linux内核版本命令(两种方法): .cat /proc/version .uname -a 二.查看Linux系统版本的命令(3种方法): .lsb_release -a即可列出所有版本信 ...

  8. 《C#编程》课件 - C#基础

    声明多维数组• 创建一个多维数组int[,] intMatrix;float[,] floatMatrix;string[,,] strCube;使用new关键字• 必须指定每个维度的大小int[,] ...

  9. ubuntu下gcc、g++和gfortran版本切换

    第一步:用 which gcc.which g++和which gfortran查看位置,我的显示结果为:/usr/bin/gcc:/usr/bin/g++和/usr/bin/gfortran 第二部 ...

  10. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...