javascript学习(一)构建自己的JS库

前言
库是一个饱受争议的热门话题。一种观点认为它是一种非常棒的工具,是任何开发者都不可或缺的;另一种观点则认为在不理解库的内部工作原理的情况下对库形成依赖,会助长懒惰的风气从而导致开发者素质下降。但是不管怎么样,好像每个人都赞同编写自己的库,况且把自己日常用到的东西合并到一起本身就是一件有意义的事情。

下面我们开始建立自己的JS库,并编写两个自己的方法


代码如下:

//作者:
//时间:2012-11-13
(function(){

window['LS']={};

function $(){
var elements =new Array();
var element;
for(var i=0;i<arguments.length;i++){
if(typeof(arguments[i])=="string"){
element=document.getElementById(arguments[i]);
}
if(arguments.length==1){
return element;
}

elements.push(element);
}
return elements;
}
window['LS']['$']=$;

function getElementByClassName(className,tag){
var allTags=document.getElementsByTagName(tag);
var matchingElements=new Array();

className=className.replace(/\-/g,"\\-"); //不明白这句话是什么意思。
var regex=new RegExp("(^|\\s)*"+className+"(\\s|$)");

var element;

for(var i=0;i<allTags.length;i++){
element=allTags[i];
if(regex.test(element.className)){ //这个element.className也不明白是什么意思
matchingElements.push(element);
}
}
return matchingElements;
}
window['LS']['getElementByClassName']=getElementByClassName;
})() //如果不加()不能执行

本人是刚开始接触javascript,里面注释部分是我不懂的地方,也希望高人能指点一下。

(0)

相关推荐

  • javascript学习(一)构建自己的JS库

    前言 库是一个饱受争议的热门话题.一种观点认为它是一种非常棒的工具,是任何开发者都不可或缺的:另一种观点则认为在不理解库的内部工作原理的情况下对库形成依赖,会助长懒惰的风气从而导致开发者素质下降.但是不管怎么样,好像每个人都赞同编写自己的库,况且把自己日常用到的东西合并到一起本身就是一件有意义的事情. 下面我们开始建立自己的JS库,并编写两个自己的方法 复制代码 代码如下: //作者: //时间:2012-11-13 (function(){ window['LS']={}; function

  • JavaScript学习笔记(十七)js 优化

    一直很迷惑司徒正美为什么对以下的for循环还鄙视, for (var i = 0; i < list.length; i++) { //循环代码 } 看了下面这篇文章终于TM明白了... 语言层次方面 循环 在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用. 如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数. 所以上面的

  • JavaScript学习笔记(一) js基本语法

    1.标识符与关键字 标识符以字母开头,可以包含字母.数字.下划线.标识符不能使用以下保留字符: 复制代码 代码如下: abstract, boolean, break,byte,case,catch,char,class,const,debugger,default,delete,do,double,else,enum,export,extends,false,final,finally,float,for,function,goto,if,implements,import,in,instan

  • JavaScript学习笔记(二) js对象

    1.简单类型 javascript的简单类型包括 数字(Number).字符串(String).布尔值(Boolean).null值 和 undefined值.其他所有值都是对象. 2.对象 javascript中的对象是可变键控集合.在javascript中,数组.函数.正则表达式都是对象. 对象是属性的容器.其中每个属性都拥有名字和值.属性的名字可以是包括空字符串在内的任意字符串.属性值可以是除undefined值之外的任何值. 3.对象的定义方法 (1)用字面量定义.例如: var obj

  • 使用typescript+webpack构建一个js库的示例详解

    目录 入口文件 tsconfig配置 webpack配置文件 webpack入口文件配置 webpack为typescript和less文件配置各自的loader webpack的output配置 运行webpack进行打包 测试验证 输出esm模块 已经输出了umd格式的js了, 为什么还要输出esm模块? ----TreeShaking 用tsc输出esm和类型声明文件 package.json中添加exports配置声明模块导出路径 完善package.json文件 用api-extrac

  • 原生javascript 学习之js变量全面了解

    1.变量的命名 方法的命名(驼峰命名法) 全部小写 : 单词与单词之间全部下划线 (my_namespace) 大小写混合 : 第一个单词首字母小写其他单词首字母大写. 规则 首字符 英文字母或下划线 组成   英文字母 数字 下划线 禁忌   JavaScript 关键字 保留字 2. 变量的声明 显示声明   :  var 关键字 陋习         :  没有类型 重复声明 隐式声明 不声明直接赋值 正解        : 先声明 后读写 先赋值 后运算 3. 变量类型 值类型 A) 占

  • javascript学习总结之js使用技巧

    1 假如浏览器不支持JavaScript怎么办? a.为什么浏览器会不支持?大部分浏览器都有禁用脚本的功能,例如chrome. b.在js被禁用的情况下要保证网页仍能实现它的核心功能(关键的用户需求) 例子:在一个新窗口里打开链接,可以使用BOM的open()方法 function popUp(winURL) { window.open(winURL, "popup", "width=,height="); } 具体的js实现有以下几个方案: 方案一:使用javas

  • JavaScript事件学习小结(三)js事件对象

    相关阅读: JavaScript事件学习小结(五)js中事件类型之鼠标事件 http://www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 http://www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员(属性和方法) http://www.jb51.net/article/86262.htm JavaScript事件学习小结(二)js事件处理程序 http://www

  • javascript学习笔记(十三) js闭包介绍(转)

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. 复制代码 代码如下: var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. 复制代码 代码如下: function f1(){ var n=999; } alert(n); // error 这里

  • JS库之Three.js 简易入门教程(详解之一)

    开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择. 博主目前也在学习three.js,发现相关资料非常稀少,甚至官方的api文档也非常粗糙,很多效果需要自己慢慢敲代码摸索.所以我写这个教程的目的一是自己总结,二是与大家分享. 本篇是系列教程的第一篇:入门篇.在这篇文章中,我将以一个简单的demo为例,阐述three.js的基本配置方法.学完这篇文章

随机推荐