var $ = function(el){
return (typeof el == 'object')?el:document.getElementById(el);
};

解决方案 »

  1.   

    不知道什么目的,如果只是想显示一下value的话,Array.prototype.each = function(closure){
        for (var i=0;i<this.length;i++) closure(this[i]);
    }这样就可以
      

  2.   

    第二种情况改成
    objs2.each(function(obj){
        alert($(obj + ""))
        alert($(obj + "").value);
    })
      

  3.   

    按照原来的做法,其实第三种情况也是有问题的
    定义each方法时,有递归调用,----递归后走到".concat(this.slice(1).each(closure))"时,这是的this是一个只有一个元素的数组,所以this.slice(1)就有问题了---