3.1什么是JavaScript对象
1)JavaScript是一种基于对象的语言,对象是JavaScript中最重要的元素。
2)JavaScript包含多种对象:内置对象、自定义对象、浏览器对象、HTML DOM对象、ActiveX对象
3.2使用对象
1)对象由属性和方法封装而成。
2)属性的引用:使用点“.”运算符、通过下标的方式引用。
3)对象的方法的引用:ObjectName.methods()。
3.3常用内置对象
1)简单数据对象:String、Number、Boolean
2)组合对象:Array、Date、Math
3)复杂对象:Function、RegExp
3.4 String对象
1)创建字符串对象
方式一:var str1 = “hello world”;
方式二:var str2 = new String(“hello world”);
2)String对象的属性:length,例如:alert(str1.length);
3)String对象的方法:
①大小写转换:toLowerCase():转为小写;toUpperCase():转为大写。
例如:var str1=”AbcdEfgh”;
var str2=str1.toLowerCase();alert(str2);//结果为 abcdefgh
var str3=str1.toUpperCase();alert(str3);//结果为 ABCDEFGH
②获取指定字符:charAt(index):返回指定位置index的字符;
charCodeAt(index):返回指定位置index的字符的Unicode编码
注意事项:下标index从0开始。
例如:var str1=”JavaScript网页教程”;
var str2=str1.charAt(12);alert(str2);//结果为 教
var str3=str1.charCodeAt(12);alert(str3);//结果为 25945
③查询指定字符串:
indexOf(findstr,index):从前往后,从位置index开始查找指定的字符串findstr,并返回出现的首字符的位置。
lastIndexOf(findstr):从后往前,查找指定的字符串findstr,并返回出现的首字符的位置。
注意事项:index可省略,代表从0开始找。如果没有找到则返回-1。
例如:var str1=”JavaScript网页教程”;
var str2=str1.indexOf(“a”);alert(str2);//结果为 1
var str3=str1.lastindexOf(“a”);alert(str3);//结果为 3
④获取子字符串:substring(start,end):从start开始,到end结束,不包含end。
例如:var str1=”abcdefgh”;
var str2=str1.substring(2,4);alert(str2);//结果为 cd
⑤替换子字符串:replace(oldstr,newstr):返回替换后的字符串。
例如:var str1=”abcde”;
var str2=str1.replace(“cd”,”aaa”);alert(str2);//结果为 abaaae
⑥拆分子字符串:split(bystr):用bystr分割字符串,并返回分割后的字符串数组。
例如:var str1=”一,二,三,四,五,六,日”;
var strArray=str1.split(“,”);alert(strArray[1]);//结果为 二
3.5 String对象与正则表达式
String对象有几个方法可以结合正则表达式使用。
1)方法:
①replace(regexp,”replacestr”):返回替换后的结果。
②match(regexp):返回匹配字符串的数组。
③search(regexp):得到匹配字符串的“首“字符位置的索引。
2)JavaScript中使用正则表达式:使用两个斜杠, / 表达式 / 匹配模式
①正则表达式回顾:\d 或者 [a-z]{3,5}。就是纯文本的表达式,用来表示某种匹配模式。在不同的语言环境下,提供了不同的类,执行或者使用正则表达式,实现文本的各种处理。
②匹配模式:g:global,全局匹配;m:multilin,多行匹配;i:忽略大小写匹配。
例如:var str1=”abc123def”;
var str2=str1.replace(/\d/g,”*”);alert(str2);//abc***def,如果不用全局匹配则只替换一个数字
var array=str1.match(/\d/g);//1,2,3
var index=str1.search(/\d/);alert(index);//3
3)案例
eg1:查找并替换文本框中录入的子字符串 js 为 *
function searchStringAndReplace() { var str = document.getElementById(“txtString”).value;
var count = 0; var index = str.indexOf(“js”, 0);
while (index > -1) { str = str.replace(“js”,”*”); index = str.indexOf(“js”, index + 1); }
document.getElementById(“txtString”).value = str; }
eg2:字符查询与过滤(使用正则表达式)
function stringByRegex() { var str = document.getElementById(“txtString”).value;
var result = str.match(/js/gi);
document.getElementById(“txtString”).value = str.replace(/js/gi, “*”);
alert(“共替换了” + result.length + “处。”); }
3.6 Array对象
一列有多个数据。JavaScript中只有数组没有集合。
1)创建方式
方式一:var arr = [“mary”,10,true];//用中括号!不是大括号;常用;声明的同时并赋值。
方式二:var arr = new Array(“mary”,10,true);//声明的同时并赋值。
方式三:var arr = new Array();或var arr = new Array(7);//可有长度也可没有长度。即便写了长度,也能把第8个数据存入!先声明后赋值。
例如:arr[0] = “mary”; arr[1] = 10; arr[2] = true; alert(arr[3]);//undefined
2)数组的属性:length
3)创建二维数组:通过指定数组中的元素为数组的方式可以创建二维甚至多维数组。
例如:var week=new Array(7); for(var i=0;i<=6;i++){ week=[i]=new Array(2); }
week[0][0]=”星期日”;week[0][1]=”Sunday”; ……
week[6][0]=”星期六”;week[6][1]=”Saturday”;
4)方法:数组转换为字符串
①join(bystr):以bystr作为连接数组中元素的分隔字符,返回拼接后的数组。
②toString():输出数组的内容(以逗号隔开)。
例如:var arr1=[1,2,3,4]; alert(arr1.toString());//1,2,3,4 alert(arr1.join(“-“));//1-2-3-4
5)方法:连接数组,concat(value,…):value作为数组元素连接到数组的末尾(数组连接),返回连接后的数组。
例如:var a=[1,2,3]; var b=a.concat(4,5); alert(a.toString());//1,2,3
alert(b.toString());//1,2,3,4,5
注意事项:concat方法并不改变原来数组的内容!
6)方法:获取子数组,slice(start,end):截取从start开始到end结束(不包含end)的数组元素。end省略代表从start开始到数组结尾。
例如:var arr1=[‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,];
var arr2=arr1.slice(2,4);alert(arr2.toString());//c,d
var arr3=arr1.slice(4);alert(arr3.toString());//e,f,g,h
7)方法:数组反转,reverse():改变原数组元素的顺序。
例如:var arr1=[32,12,111,444]; alert(arr1.reverse());//444,111,12,32
8)方法:数组排序
①sort():数组排序,默认按照字符串的编码顺序进行排序。
②sort(sortfunc):sortfunc用来确定元素顺序的函数名程。
例如:var arr1=[32,12,111,444]; arr1.sort();alert(arr1.toString());//111,12,32,444
function sortFunc(a,b){ return a-b; }
arr1.sort(sortFunc);alert(arr1.toString());//12,32,111,444
9)案例
eg1:数组倒转与排序
function operateArray(t) {
//拆分为数组
var array = document.getElementById(“txtNumbers”).value.split(“,”);
switch (t) { case 1: array.reverse(); break;
case 2: array.sort(); break;
case 3: array.sort(sortFunc); break; }
alert(array.toString()); }
function sortFunc(a, b) { return a - b; }
eg2:统计文本框中录入的各个字符的各数(使用二维数组)
5)案例
eg:简单计算器
function calculater(s){
if( s == “=”){//如果单击的是=则计算,否则拼接
var s1 = document.getElementById(“txtNumber”).value;
var r = eval(s1);
document.getElementById(“txtNumber”).value = r;
}else{ document.getElementById(“txtNumber”).value +=s; } }
3.13 Arguments对象
1)arguments是一种特殊对象,在函数代码中,代表当前方法被传入的所有的参数,形成一个数组。
2)在函数代码中,可以使用arguments访问所有参数。
①arguments.length:函数的参数个数; ②arguments.[i]:第i个参数
3)JavaScript中,没有传统意义上的重载(方法名相同,但是参数不同),即:如果方法名相同,则以最后一次定义的为准。如果想在JavaScript中实现类似于重载的效果,就需要使用arguments对象。
4)案例
eg:模拟一个方法的重载
//Javascript 代码中,相同名称的方法如果重复定义,将会用新定义的方法覆盖已有的同名方法,因此,只能创建一个名为 myMethod 的方法,且不需要为该方法定制参数。
function myMethod() {
if (arguments.length == 1) {//计算平方
var n = parseInt(arguments[0]);//避免隐式转换,主动显式转换
alert(n + ” 的平方为:” + n * n); }
else if (arguments.length == 2) {//计算和
var n = parseInt(arguments[0]);
var m = parseInt(arguments[1]);
var result = n + m;
alert(n + ” 与 ” + m + ” 的和为:” + result); } }