原文:
Javascript学习1 - Javascript中的类型对象
1.1关于Numbers对象.
常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个方法:toLocalString()
number.toFixed(digits) 把numberl转换为小数,digits代表小数几位.
常用的与Number对应的全局函数:isNaN(vars) 判断vars是不是数字,
如是,返回false,如不是,返回true. 具体的意思是is Not a Number.
1.2 strin类型和String对象.Javascript中具体的类型有Numbers,Strings,Boolean,Objects,Arrays,Date类型,
因为JS是面向对象的,所以,大可以把这些类型看作一个个对象.些外,也有全局函数或相应的方法来配合这些类型对象。
String对象是常用到的一种类型对象,所以,应该熟练掌握其方法与其相关的全局函数.
1.2.1 Strings对象的方法:
String的所有方法参考《Javascript权威指南》P690
1
String.length
//
返回字符串的长度
2
String.charAt(s.length
-
1
)
//
返回字符串某个位置的字符
3
String.substring(
1
,
4
)
//
返回字符串1~4位置的字符串
4
String.indexOf(
'
a
'
)
//
返回字符串第一个'a'字符的位置.
1.2.2 字符串与其它类型的转化:
① number转化成string型:
●toString方法:
1
string
=
number.toString()
/
string
=
String(number);
//
number转化为string的方法
2
string
=
"
0
"
+
number.toString(
8
);
//
八进制数字字符串
3
string
=
"
0x
"
+
number.toString(
16
);
//
十六进制数字字符串
●toFixed方法:可以把一个数字转换为字符串,并且格式小数点后的位数
toExponential方法: 使用指数表示法把一个数字转换为字符串
toPrecision方法:使用拽定的有意义的位数来显示一个数字
1
var
n
=
123.234
;
2
n.toFixed(
0
);
//
return "123.234"
3
n.toFixed(
2
);
//
return "123.23"
4
n.toExponential(
1
);
//
return "1.23e+5"
5
n.toPrecision(
4
);
//
return "123.2"
② string转化成numberg型
●字符串用于数字环境中,会自动转换为数字
var n = "123"*"2"
var n = "23"- 0; // 只要将字符串减0就可以转换为数字型
●Number函数
number = Number(string) //把string转化为number型,但过于严格
●parseInt,parseFloat函数,转换不成功,返回NaN
1
number
=
parseInt(
"
3 blind
"
)
//
Returns 3
2
number
=
parseFloat(
"
3.14 meters
"
)
//
returns 3.14
3
number
=
parseInt(
"
3.14
"
)
//
return 3
4
number
=
parseInt(
"
0xFF
"
)
//
return 255
③ 二进制,8进制,16进制,或任何一进制数转化为字符型:
1
parseInt(
"
111
"
,
2
)
//
return 8
2
parseInt(
"
ff
"
,
16
)
//
16进制数的ff转化为int型,返回为255
3
parseInt(
"
077
"
,
8
)
//
8进制数077转化为int型,返回为63.
1.2.3 关于包装对象String
如下语句
var s = "there is a hat";
s是string类型,而string类型是Javascript中的一个基本类型。
但是,作为基本类型的s,为什么能够进行如s.length,s.indexOf对象式的操作呢?
事实上,在Javascript中,三个关键基本数据类型(string,int,boolean)都有一个相应的对象类。简而言之,就是 Javascript不仅支持数字、字符串和布尔值这些数据类型,还支持Number,String和Boolean类。这些类是基本数据类的包装 (wrapper)。这些包装类不仅具有和基本类型一样的值,还定义了用来运算数据的属性和方法。
以上,详细讨论见《Javascript权威指南》3.13节。
1.3 Objects对象,这种类型对象包含的东西就多了,比如document对象,windows对象,
具体到button,image,form,textfiled都是一个个objects对象,每个对象根据其不同的类型,
都有相应的方法和函数,比如button对象,就有width,height属性.image也有width,height,border属性等.
具体的对象可设置属性可以参考CSS,因为CSS就是设置这东西的.
1.3.1 定义:对象是已命名数据的集合。(集合这两个字非常重要)
已命名的数据通常被作为对象的属性来引用,要引用对象的属性,就必须引用这个对象,其后加.属性名,如:
image.width / image.height
Javascript中的对象可以作为关联数组使用,因为它能将任意的数据值和任意的字符串关联起来。所以,可以使用数组方式访问对象内的属性:
image["width"] / image["height"]
1.3.2 创建对象
var o = new Object();
var pattern = new RegExp("\\sajax\\s","i");
1.3.3 对象转换
当一个非空对象转换成Boolean类型时,转换为true.
当一个对象转换为字符串时,会调用对象的toString()方法
当一个对象转换为数值时,首先调用ValueOf()方法,如果ValueOf()返回的是对象自己,则调用toString(),再把字符串转换成数值。
1.4 arrays对象.
这种类型对象有其固有的方法和属性,应熟练掌握之,因为用到的场合比较多.
1.4.1 创建arrays对象:
1
var
a1
=
new
Array(
"
1
"
,
"
2
"
,
"
3
"
);
//
new 定义
2
var
a2
=
[
"
1
"
,
"
2
"
,
"
3
"
];
//
直接定义
3
var
a3
=
new
Array(
3
);
//
new 定义,并赋值
4
a3[
0
]
=
1
;a3[
1
]
=
2
;a3[
2
]
=
3
;
5
var
a4
=
new
Array();
//
new定义,不指定长度
6
a4[
0
]
=
1.2
; a4[
1
]
=
"
javascript
"
; a4[
2
]
=
true
; a4[
3
]
=
{ x:1,y:3}
;
7
var
a4
=
new
Array(
1.2
,
"
javascript
"
,
true
,
{x:1,y:3}
);
//
与以上定义同价
1.4.2 arrays对象的方法:
1
var
a
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
];
2
var
numlen
=
a.length
//
获得数组的长度
3
var
c
=
a.concat(b)
//
a数组和b数组合并
4
var
joinArr
=
a.join(
"
-
"
);
//
数组用什么方式组合,组合后返回一个字符串,这里返回的是"1-2-3-4-5-6-7-8"
5
a.pop()
//
数组从最后位置弹出一项
6
a.push(
"
4
"
,
"
5
"
),
//
数组从栈顶压入两项数值
7
a.shift()
/
a.unshift(val1,[val2..])
//
跟pop()和push()为一对,只不过插入和弹出的位置不一样,一个是尾部,一个是首部.
8
a.reverse();
//
reverse() 返转数组,会改变数组
9
var
sa
=
a.slice(
1
,
3
);
//
sa = [2,3] 剪切某数组,从begin开始,直到end之前一个.前切的数组作为返回值
10
a.splice(
3
,
0
,
67
,
68
);
//
a为[1,2,3,67,68,4,5,6,7,8]
11
a.splice(
3
,
3
,
67
);
//
a为[1,2,3,67,7,8]
Code
var a = [1,2,3,4,5,6,7,8];
var numlen = a.length //获得数组的长度
var c = a.concat(b) //a数组和b数组合并
var joinArr = a.join("-"); //数组用什么方式组合,组合后返回一个字符串,这里返回的是"1-2-3-4-5-6-7-8"
a.pop() //数组从最后位置弹出一项
a.push("4","5"), //数组从栈顶压入两项数值
a.shift()/a.unshift(val1,[val2..]) //跟pop()和push()为一对,只不过插入和弹出的位置不一样,一个是尾部,一个是首部.
a.reverse(); //reverse() 返转数组,会改变数组
var sa = a.slice(1,3); //sa = [2,3] 剪切某数组,从begin开始,直到end之前一个.前切的数组作为返回值
a.splice(3,0,67,68); //a为[1,2,3,67,68,4,5,6,7,8]
a.splice(3,3,67); //a为[1,2,3,67,7,8]
注://splice(index,howMany,[val1,[val2..]]) //在数组的某地方(index)插入(或替代)多少个(howMany)值(val1,val2..);
a.toString() //返回a的字符串
arrays对象有关的全局函数
//sort(compareFunction) //数组按sortFun规定的方式来排序
1.5 Date对象
与日期相关的类型对象.
1.5.1 定义Date对象:
1
var
now
=
new
Date();
2
var
date
=
new
Date(year,month,day,hour,minutes,seconds,msc);
1.5.2 得到当前的日期和时间
1
var
now
=
new
Date();
2
var
date
=
now.GetLocaleDateString();
//
得到当前的日期
3
var
time
=
now.GetLocaleTimeString();
//
得到当前的时间
1.5.3 得到年,月,日,时,分,
1
var
hour
=
now.getYear();
2
var
month
=
now.getMonth();
3
var
day
=
now.getDay();
4
var
hour
=
now.getHours();
5
var
min
=
now.getMinutes();
6
var
time
=
now.getTime();
1.5.4 设置时间和日期
1
var
date
=
new
Date(
2006
,
7
,
30
);
2
setYear(), setMonth(),setDay(),setHour(),setMinutes();
1.5.5 把字符串转化为Date
var date = Date.parse(datestr);
1.6 定义直接量
所谓直接量,即有实体,但没有变量名称。可以定义函数直接量,对象直接量,数组直接量。
1.6.1 函数直接量:
var square = new Function(x) {return x*x;}
或var square = new Function("x","return x*x;"}
1.6.2 对象直接量
var rectangle = { upperLeft: {x:2,y:2},
lowerRight: {x:4,y:4}
}
1.6.3 数组直接量
var a = [1.2,"javascript",true,{x:1,y:3}];
1.7 其它类型对象
1.7.1 null
null是一个特殊的值,表示“无值”,常被看作对象类型的一个特殊值,即表示“无对象”的值
如果一个变量为null,就说明它的值不是有效的对象,数组,数字,字符串和布尔值
1.7.2 undefined
变量在以下的情况下,其值为undefined:
①使用一个并未声明的变量
②使用了已经声明但还没有赋值的变量时
③使用了一个并不存在的对象属性时
虽然undefined和null值不同,但==运算符可以将两者看作相等,如:
my.prop == null //返回true
1.7.3 Error对象
当发生运行错误时,Javascript解释器会抛出某个类的对象。
每个Error对象具有一个message属性,存放的是Javascript实现特定的错误消息
预定义的错误对象有:Erorr, EvalError,RangeError,ReferenceError,SyntaxError,TypeError和URIError