(function (win, doc) { var by = {}, slice = [].slice, type2method = { id: "getElementById", className: "getElementsByClassName", tagName: "getElementsByTagName", query: "querySelectorAll" }; for (var type in type2method) { if (type2method.hasOwnProperty(type) && type2method[type] in doc) { (function (type, method) { by[type] = method.match(/(?:Elements|All)/) ? function () { return slice.call(doc[method].apply(doc, arguments)); } : function () { return doc[method].apply(doc, arguments); }; })(type, type2method[type]); } } win.by = by; })(window, document)