这是一个创建于 3428 天前的主题,其中的信息可能已经有所发展或是发生改变。
我想自定义一个类似于addEventListener的顶级函数.
想要达到的效果是
比如我定义了一个 addEvent()添加事件的兼容函数我想把它挂在到所有对象里面
然后我抓取一个DOM元素直接给他添加事件
var drop = document.xxxxxx;
drop.addEvent('click',function(){
console.log('click');
})
下面是我写的一个函数就是爆出未定义不知为何.
[code]
(function(window){
Object.prototype.addEvent = function(e,o) {
console.log('1');
if(!window.attachEvent) {
this.addEventListener(e, o, false);
} else {
this.attachEvent('on' + e, o);
}
}
function $(e) {
var cAt = e.charAt(0);
var obj;
if(cAt == '#') {
obj = document.getElementById(e.substring(1));
} else if(cAt == '.') {
obj = document.getElementsByClassName(e.substring(1));
} else {
obj = document.getElementsByTagName(e);
}
obj.prototype = new addEvent;
return obj;
}
window.addEvent('load',function(){
var drop = $('#drop');
drop.addEvent('click',function(){1})
console.log(drop);
}, false);
})(window)
[/code]
这是整齐版的代码:http://pastie.org/10126119
不知道这属于js的那部分知识点?原型链吗?
求大牛指点一二.
4 条回复 • 2015-05-03 13:21:15 +08:00
|
|
1
zhouzm 2015-05-03 12:43:50 +08:00 1
console.log(drop);
先看看你抓取的是不是有效的 element。
|
|
|
2
Biwood 2015-05-03 12:49:48 +08:00 2
删掉 obj.prototype = new addEvent; 这一行就行了,你这一行的写法本身也有问题。
JavaScript里面的所有对象都是 Object 对象的实例,所有对象会自动继承 Object 的属性和方法,不需要手动使用原型继承。
|
|
|
3
pcwow 2015-05-03 12:54:52 +08:00 1
楼上的说得对
|
|
|
4
banri 2015-05-03 13:21:15 +08:00 1
|