V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
lvfujun
V2EX  ›  JavaScript

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

  •  
  •   lvfujun · 2015-05-03 11:24:40 +08:00 · 2791 次点击
    这是一个创建于 3527 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想自定义一个类似于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
    zhouzm
        1
    zhouzm  
       2015-05-03 12:43:50 +08:00   ❤️ 1
    console.log(drop);

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

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

    推荐楼主看完这部分
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2789 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:54 · PVG 20:54 · LAX 04:54 · JFK 07:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.