javascript 继承???????????????????

2015-05-03 11:24:40 +08:00
 lvfujun
我想自定义一个类似于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的那部分知识点?原型链吗?
求大牛指点一二.
2791 次点击
所在节点    JavaScript
4 条回复
zhouzm
2015-05-03 12:43:50 +08:00
console.log(drop);

先看看你抓取的是不是有效的 element。
Biwood
2015-05-03 12:49:48 +08:00
删掉 obj.prototype = new addEvent; 这一行就行了,你这一行的写法本身也有问题。

JavaScript里面的所有对象都是 Object 对象的实例,所有对象会自动继承 Object 的属性和方法,不需要手动使用原型继承。
pcwow
2015-05-03 12:54:52 +08:00
楼上的说得对
banri
2015-05-03 13:21:15 +08:00
http://www.imooc.com/learn/138

推荐楼主看完这部分

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188077

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX