javascript学习笔记 (一)

javascript的基本类型有:null、defined、number、string、object、boolen。function被看做是object基本数据类型的一种特殊对象

一、引用类型

1、Array
在javascript中Array是引用类型,js中数组是最强大的数据结构
它有一些方法:
(1)栈方法和队列方法
push()、pop()、shift()、unshift()
(2)排序方法
sort()、reverse()
reverse的作用是反转数据的数据
sort默认排序是升序,它的原理是调用每一个数组项的字符串toString(),然后比较得到的字符串来排序。

var arr=[1,10,5,15];
arr.sort();
alert(arr); //1,10,15,5
所以sort排序的情况下,很多时候并不是我们想要的。因此,sort可以接受一个函数类型的参数,以便我们比较哪个值在前面。
function compare(value1,value2){
   if(value1<value2){
       return -1;
   }
   else if(value1>value2){
       return 1;
   }
   else{
       return 0;
   }
}
var arr=[0,1,5,15,10];
arr.sort();
alert(arr); //0,1,5,10,15
(3)操作方法

concat()、slice()、splice()
concat()链接一个或者多个数组

var arr=["111","222"]
var temp=arr.concat("yellow",["green","blue"]);//111,222,yellow,green,blue
slice()接受一个或者两个参数,分别表示所取数组的起始位置和终止位置。如果是一个参数,取指定位置到数组结束的所有项。如果两个参数,取起始和终止位置的所有项(不包括终止位置的那一项)。
splice()可以对数组的各项进行”删除“、”插入“、”更新“的操作

2、Date类型
在调用Date构造函数不传递参数的时候,新创建的对象自动获取当前日期和事件,如果想根据特定的时间创建日期对象,必须传入日期时间的毫秒数。为了简化这一过程,js提供了两个函数Data.parse()和Date.UTC()。
Data.parse()和Date.UTC()都是返回时间的毫秒数。Date.UTC()参数分别是年份,基于0的月份(1月是0,二月是1),月中的哪一天,小时数,分钟,秒及毫秒数;前面的年份和月份是必须的。Date的valueOf返回时间的毫秒数。
比如要创建2013年1月15号的时间:

var t1=new Date(Date.parse("1/15/2013 13:30:45"));//里面的格式是:月/日/年
var t2=new Date("1/15/2013 13:30:45"); 
var t3=new Date(Date.UTC(2013,0,15,13,30,45));
var t4=new Date(2013,0,15,13,30,45);
 
alert(t1);//Tue Jan 15 2013 13:30:45 GMT+0800 (中国标准时间)
alert(t2);//Tue Jan 15 2013 13:30:45 GMT+0800 (中国标准时间)
alert(t3);//Tue Jan 15 2013 21:30:45 GMT+0800 (中国标准时间)
alert(t4);//Tue Jan 15 2013 13:30:45 GMT+0800 (中国标准时间)

alert(t1.toLocaleString());//2013年1月15日 下午1:30:45
alert(t2.toLocaleString());//2013年1月15日 下午1:30:45
alert(t3.toLocaleString());//2013年1月15日 下午9:30:45
alert(t4.toLocaleString());//2013年1月15日 下午1:30:45

3、正则类型RegExp

var reg1=/[bc]ac/i;
var reg2=new RegExp("[bc]ac","i");//reg1和reg2是等价的
var text="mon and dad and baby";
reg1.exec(text);
reg2.exec(text);

4、function函数
(1)函数的属性和方法
每个函数都包括两个属性:length和prototype。length表示函数愿意接受参数的个数。
每个函数都包含两个非继承而来的方法:apply()和call()。apply接受两个参数,一个是函数的作用域,一个是参数的数组,而数组可以是arguments对象。call方法和apply作用相同,只是接受参数方式不同,对于call的参数,第一个是作用域,其余的参数都是传递过来的参数。

function sum(n1,n2){
    alert(n1+n2);
}
function sum2(n1,n2){
    sum.apply(this,arguments);
    //或者
    //sum.apply(this,[n1,n2]);
    //sum.call(this,n1,n2);
}
实际上call和apply的作用是定义函数作用域

二、值类型

1、string类型
var s1="some text";
var s2=s1.substring(2);
按照逻辑基本类型值不是对象,不应该有方法函数,那么上面那段代码是如何执行的?
     在第二行代码访问s1的时候,访问过程处于一种读取模式,会从内存中读取这个字符串的值,在这个过程中后台会执行如下过程:
1、创建string类型的一个实例
2、在实例上调用指定的方法
3、销毁这个实例
上面这三部也适用于boolen、number类型对应的布尔值和数字值

2、boolen类型

布尔表达是中的所有对象都会返回true

var falseObject = new Boolen(false);//true
3、number类型
和boolen一样,number重写了valueOf()、toLocaleString()、toString()方法。重构后的valueOf()返回基本数值,另外两个方法返回字符串形式的数值。可以向toString()传递数值,来返回相应进制的数值。
var num = 10;
num.toString(2);//1010
num.toString();//10
num.toFixed(2);//10.00
num.toExponential(1);//1.0e+1
var num = 10.005;
num.toFixed(2);//10.01
三、常用对象
1、Math对象
2、内置对象Global对象
(1)URI编码方法
他们用特殊的utf-8字符替换所有无效的字符,让浏览器能够识别。
encodeURI():主要用于对整个uri进行编码
encodeURIComponent():主要用于对uri某段进行编码
区别:encodeURI()不对属于URI的特殊字符进行编码,例如:冒号,正斜杠,问号,井号,编码后的结果是除了空格之外的字符都原封不动,所有空格转化为%20;而后者则会对发现的任何非标准字符进行编码。
decodeURI()    decodeURIComponent()
(2)eval方法
(3)Global属性
(4)Window对象











你可能感兴趣的:(javascript学习笔记 (一))