日期:2014-05-16  浏览次数:20384 次

javascript你应该知道的七件事

Javascript发展到今天,很高兴看到她的成功。曾经好多人都这么说:写程序这么多年,现在最看不懂的程序是javascript!javascript虽然是一种弱类型语言,但是她却有着“高贵”的理论。下面是学习javascript过程中的一些小激动时刻,记录下来,大家可以跟我一起感受。

缩略标记

在创建对象和数组的过程中可以使用缩略标记。过去,我们需要创建一个对象时,我们会这样写:

var car =new Object();
	car.colour ='red';
	car.wheels =4;
	car.hubcaps ='spinning';
	car.age	=4;

现在可以这样写:

var car ={
			colour:'red',
			wheels:4,
			hubcaps:'spinning',
			age:4
		}

这样写更加简洁,并且不用重复写对象名。

JSON数据格式

JSON改变了javascript存储数据的方式,运用JSON,你可以使用javascript自带的格式存储各种复杂的数据并且不需要进行额外的转换,JSON是JavaScript Object Notation的缩写。

例如:想要描述一个乐队的话,可以这样写:

var band ={
			"name":"The Red Hot Chill Peppers",
			"members":[
			{
				"name":"Anthony Kiedis",
				"role":"lead vocals"	
			},
			{
				"name":"Micheal",
				"role":"bass guitar"	
			},
			{
				"name":"Chad",
				"role":"drums"	
			},
			{
				"name":"John",
				"role":"lead"	
			}
			],
			"year":"2009"
		}

Javascript自带函数(数学、数组以及字符串函数)

通读了javascript的数学、数组和字符串函数后,意识到他们会让编程变得非常方便,使用他们可以避免使用许多循环和条件。例如:当需要找到一组数中的最大数时,需要写这样一个循环:

var numbers =[3,324,23,22,124];
	var max =0;
	for (var i=0; i<numbers.length;i++){
		if(numbers[i]>max){
			max=numbers[i];	
		}	
	}
	alert(max);

可以不通过循环这样实现:

var numbers =[3,324,23,22,124];
	numbers.sort(function(a,b)(return b-a));
	alert(numbers[0]);

其余操作字符串的常用函数式split()和join()。最经典的例子可能就是利用一个函数将css的类添加到元素中。

现在的问题是,当需要在DOM元素中添加一个类时,要么是将它作为第一个类添加,要么是将它和一个空格键一起加在已经存在的类前面。当删除该类时,也需要删除相应的空格。

因此,原始方程应该写成这样:

function addclass(elm,newclass){
		var c =elm.className;
		elm.className=(c==='')?newclass:c+' ' +newclass;	
	}

可以运用split()和join()函数来自动实现:

function addclass(elm,newclass){
		var classes =elm.className.split(' ');
		classes.push(newclass);
		elm.className =classes.join(' ');	
	}

这样操作可以保证类与空格自动分类且结果被附加在最后。


事件代理

事件使得网络应用可以工作,他的存在,使得用户不需要接触核心代码就可以使产品具有更好的可拓展性。当某一特定的元素或其上DOM层的所有元素发生某一事件时,可以通过单一的处理程序对父元素进行处理来简化事件处理过程,而不是使用大量的程序。比如说想要获得一个连接列表,而且想要通过函数的调用而不是通过加载来获得,其HTML实现方法如下:

<h2>Great Web resources</h2>
    <ul id ="resources">
    	<li><a href ="#">Opera Web Standards Curriculum</a></li>
        <li><a href ="#">Sitepoint</a></li>
        <li><a href ="#">A List Apart</a></li>
        <li><a href ="#">YUI Blog</a></li>
        <li><a href ="#">Blam it on the voices</a></li>
        <li><a href ="#">Oddly specific</a></li>
</ul>

通常事件处理程序是在整个连接中使用循环: