我知道如果定义个
 function abc(){
alert(1);
}
想要执行的话就是直接写
abc();但是我想定义的函数是可以跟在元素后面的,比如var myDiv = document.getElementById("mydiv");myDiv.abc();而且这个abc()摆明了是操作.之前的元素的,就像jquery里面的大量函数show()、hide()、eq()、attr()等等。这样的函数叫什么名字?有没有专门的文章介绍这些方法呢?我想应该不是很复杂只是我还没搜到而已,希望有经验的高手们指点一下,多谢了

解决方案 »

  1.   

    这样就可以了
    function $(domid)
    {
      var obj=document.getElementById(domid);
      obj.hide=function()
      {
        this.style.visibility='hidden';
      }
      return obj;
    }
    var myDiv=$("mydiv");
    mydiv.hide();
      

  2.   

    js面向对象的知识而已,jquery也不是多么神奇的东东,不要把它神化了
      

  3.   

    多谢!
    但是看到您的代码后,感觉这么写是可以。这种方法等于说是给$()这个对象多写了一个方。取id和hide函数是绑在一起的,难道jquery也是这么干的?
    如果非要绑在一起的话 那我后面还是$$()取tagname和$$$()取class的对象,岂不是每个都要绑一个hide了?
    如果我继续写show()、addClass()之类的函数的话那也太繁琐了吧!代码一定很臃肿,不能分开写吗?好像有一个继承的方式可以分开写,或者还有什么其他更好的写法?因为我打算自己写一个类库,没想到第一步就把我难住了,不知道怎么写比较规范一些。请过来人继续指点,谢谢了
      

  4.   

    我那个只是举个例子而已,
    原理就是这样的,至于为了结构清晰,使用继承什么的,这是你写代码时自己考虑的事情,不可能让别人给你想。
    js没有专门的继承机制,在子类中添加所有父类的成员就叫继承了,一般实现继承通过构造函数或通过原型链
    http://bbs.51js.com/thread-72698-1-1.html
    随便搜了一下,感觉这个说得挺全面
      

  5.   

    jquery 返回的不是一个 dom 对象。
    自己看看它的源码,不就明白了。也可以以单步调试
      

  6.   

    JQ中的$返回的其实是一个jquery对象,而不是原生的节点对象,所以jquery的那些show、hide方法都是基于JQ对象扩展的