JavaScript是面向对象的编程。对象是JavaScript的重要组成元素。
对象由属性和方法组成。
JavaScript包含四种对象:
1.内置对象(11种)
1.1 基本类型包装类型
Boolean, Number, String
1.2 数组对象 : Array
1.3 工具对象:Math , Date
1.4 正则对象:RegExp
1.5 其他对象:Function ,Error,Global,Object
2.自定义对象
3.浏览器对象
4.ActiveX对象。
五、常用内置对象介绍:
1. Boolean,Number不建议直接使用。
2. String:字符串类型
1.常见函数和属性
length
属性,获取字符串的字符数量
charAt(i)
返回给定位置的字符
charCodeAt()
返回给定位置的字符的字符编码
var s = "helloworld";
s.charAt(1); //e
s.charCodeAt(1); //101
concat()
将一个或多个字符串拼接起来,返回拼接得到的新字符串,但是大多使用" "拼接
slice()
(开始位置,返回字符后一个字符位置)
substr()
(开始位置,返回字符个数)
//从下标为3的位置开始,截取4个字符,包括下标为3的位置的字符
document.write(s.substr(3,4) "<br>");
substring()
(开始位置,返回字符后一个字符位置)
//从下标为6的位置开始截取,截取到下标为8的位置,但是不包括下标为8的字符[6,8)
document.write(s.substring(6,8) "<br>");
var s = "helloworld";
s.slice(3,7); //lowo
s.substr(3,7); //loworld
s.substring(3,7);//lowo
s //helloworld 不改变原值大小
indexOf(查找字符,startposition);
从前往后查找指定字符所在位置
"abcababacabc".indexOf("a",2)
lastIndexOf(要查找字符,开始位置);
从后往前查找字符串所在位置,可以有第二个参数,代表从字符串中哪个位置开始查找。
trim();
删除前置以及后置中的所有空格,返回结果
var s = " hello world ";
console.log("|" s.trim() "|"); //|hello world|
toLowerCase() :转换为小写
toUpperCase() :转换为大写
match() : 查找字符串,返回匹配字符串的数组,如果没有匹配则返回null
"JavaScript".match("Script") ----> 返回Script。
search() : 查找字符串,返回匹配字符串的首字符位置索引
"JavaScript".search("Script") ----> 返回4.
replace() : 替换字符串。
"JavaScript".replace("cri","heihei") ----> JavaSheiheipt
2.Array
ECMAScript数组和其他语言中的数组都是有序列表,但是有以下特性:
a.每一项都可以保存任何类型的数据。
b.数组的大小是可以动态调整。
c.数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项
1) 创建方法
1. 使用Array构造函数
var arr = new Array();
var arr = new Array(20); // 预先指定数组的大小
var arr = new Array("terry","larry","boss"); //传入参数
注意:new 关键字也可以省略,但是尽量不要省略
2. 使用数组字面量
由一对包含数组项的方括号表示,多个数组项之间用逗号分隔
var arr = ["terry","larry","boss"];
var arr = [] //空数组
2) 访问数组元素
数组变量名[索引]
1.如果索引小于数组的长度,返回对应项的值
var arr = ["terry","larry","boss"];
arr[0] ; //访问数组中第一个元素,返回值为terry
2.如果索引大于数组的长度,数组自动增加到该索引值加1的长度
var arr = ["terry","larry","boss"];
arr[3] ="jacky"; //添加元素,数组程度变为4
数组最多可以包含4 294 967 295个项
3) 检查数组
var arr = [];
typeOf(arr); //返回object
Array.isArray(arr); //判断arr是否是数组类型
4) 转换数组为字符串
数组继承Object方法,并且对这些方法进行了重写
toLocalString();
toString(); 在默认情况下都会以逗号分隔字符串的形式返回数组项
例如:
var arr = ["terry","larry","boss"];
arr.toString() //terry,larry,boss
valueOf(); 在默认情况下以数组字面量的方式显示(firefox)
arr.valueOf(); //["terry","larry","boss"];
join(); 使用指定的字符串用来分隔数组字符串
例如:
arr.join("||"); //briup||terry||jacky
5) 栈,队列方法
1.栈 LIFO (Last-In-First-Out)
push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
pop() 从数组的末尾移除最后一项,减少数组的length值,返回移除的项
2.队列 FIFO (First-In-First-Out)
shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一。
unshift() 在数组的前端添加任意个项,并返回新数组的长度。
6) 排序
reverse() 反转数组项的顺序
sort()
1.默认排序:该方法会调用每个数组项的toString() 转型方法,然后排序
2.自定义排序:
a.该方法可以接受一个比较函数作为参数,比较函数有两个参数
b.如果第一个参数位于第二个参数之前,返回负数
c.如果第一个参数位于第二个参数之后,返回正数
var arr = [11,5,23,7,4,1,9,1];
console.log(arr.sort(compare));
//该比较函数适合于大多数数据类型
function compare(v1,v2){
if(v1>v2){
return -1;
}else if( v1<v2){
return 1;
}else{
return 0;
}
}
7) 操作方法
concat() :先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,返回副本
var arr = ["aa","bb","cc","dd"];
var arr_new = arr.concat("ee","ff");
// arr_new = ["aa", "bb", "cc", "dd", "ee", "ff"]// arr不改变
slice() :可接受一个或者两个参数(返回项的起始位置,结束位置)
当接受一个参数,从该参数指定的位置开始,到当前数组末尾的所有项
当接受两个参数,起始到结束之间的项,但是不包含结束位置的项
例如:
var arr = ["aa","bb","cc","dd"];
1.接受一个参数时
var arr_new = arr.slice(1);
// arr_new = ["bb", "cc", "dd"],arr 不改变
2.接受两个参数时
var arr_new = arr.slice(1,2);
// arr_new = ["bb"]; arr不改变
splice() : 向数组的中部插入数据将始终返回一个数组,该数组中包含从原始数组中删除的项。
删除:指定两个参数(删除第一的起始位置,要删除的项数)
插入:指定三个参数(起始位置,0,要插入的项任意数量的项)
替换:指定三个参数(起始位置,要删除的项,要插入的任意数量的项)
例如:
var arr = ["aa","bb","cc","dd"];
1.删除
var del_arr = arr.splice(1,2);
// arr = ["aa","dd"]; 在原数组进行了删除操作
// del_arr = ["bb","cc"];返回删除的元素数组
2.插入
var del_arr = arr.splice(1,0,"ee","ff");
// arr = ["aa", "ee", "ff", "bb", "cc", "dd"] 将指定项插入到1位置处
//del_arr = [], 返回空数组
3.替换
var del_arr = arr.splice(1,2,"ee","ff");
// arr = ["aa", "ee", "ff", "dd"] 将"bb","cc" 替换成了"ee","ff"
//del_arr = ["bb", "cc"], 返回删除的元素数组
indexOf()(要查找的项,开始查找的位置(可选)) 从数组开头向后查找,使用全等操作符,找不到该元素返回-1
var arr = ["22","11","cc","dd","11"];
arr.indexOf(11); //返回-1,因为使用"==="进行匹配
arr.indexOf("11"); //返回1,从前往后匹配,返回第一个匹配元素的位置
lastIndexOf()(要查找的项,开始查找的位置(可选)) 从数组末尾向前查找,使用全等操作符,找不到该元素返回-1
var arr = ["22","11","cc","dd","11"];
arr.lastIndexOf("11"); //返回1,从后往前匹配,返回第一个匹配元素的位置
3.Math对象
1)常用方法
1.比较方法
Math.min() 求一组数中的最小值
Math.max() 求一组数中的最大值
Math.min(1,2,19,8,6); //1
2.将小数值舍入为整数的几个方法:
Math.ceil() 向上舍入
Math.floor() 向下舍入
Math.round() 四舍五入
console.log(Math.ceil(12.41)); //13
console.log(Math.floor(12.41)); //12
console.log(Math.round(12.3)); //12
console.log(Math.round(12.5)); //13
3.随机数
Math.random() 返回大于0小于1的一个随机数
2)其他方法:(了解即可,即用即查)
abs(num) 返回num绝对值
exp(num) 返回Math.E的num次幂
log(num) 返回num的自然对数
pow(num,power) 返回num的power次幂
sqrt(num) 返回num的平方根
scos(x) 返回x的反余弦值
asin(x) 返回x的反正弦值
atan(x) 返回x的反正切值
atan2(y,x) 返回y/x的反正切值
cos(x) 返回x的余弦值
sin(x) 返回x的正弦值
tan(x) 返回x的正切值
4.Date
日期
1.创建日期对象:
方法1:不指定参数
var nowd1=new Date();
方法2:参数为日期字符串
var nowd2=new Date("2004/3/20 11:12");
var nowd3=new Date("04/03/20 11:12");
方法3:参数为毫秒数
var nowd3=new Date(5000);
alert(nowd3.toLocaleString( ));
alert(nowd3.toUTCString());
方法4:参数为年月日小时分钟秒毫秒
var nowd4=new Date(2004,2,20,11,12,0,300);
alert(nowd4.toLocaleString( ));
//毫秒并不直接显示
document.write("<h1>日期对象</h1>");
var date = new Date();
document.write(date "<br>");
//获得当前年份-1900
document.write(date.getYear() "<br>");
//获得当前年份
document.write(date.getFullYear() "<br>");
//获得当前月份-1
document.write(date.getMonth() "<br>");
//获得当前是一个月中的哪一号
document.write(date.getDate() "<br>");
//获得星期几
document.write(date.getDay() "<br>");
//获得时间中的 时 (24)
document.write(date.getHours() "<br>");
//获得时间中的 分
document.write(date.getMinutes() "<br>");
//获得时间中的 秒
document.write(date.getSeconds() "<br>");
//获得时间中的 毫秒
document.write(date.getMilliseconds() "<br>");
5.RegExp 正则对象
1. 正则表达式
是一个描述字符模式的对象.
语法:
创建正则表达式对象:
var reg = new RegExp(pattern,modifiers);
或者
var reg = /pattern/modifiers;
注:
pattern 描述了表达式的模式/规则
modifiers 用于指定全局匹配、区分大小写的匹配和多行匹配
对应修饰符modifiers有三个选项:
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
同时在创建正则表达式对象的是也可以不写修饰符
2 pattern内容的分析
括号:
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
(red|blue|green) 查找任何指定的选项。
元字符:
. 查找单个字符,除了换行和行结束符。 想表示字符. 可以转义
w 查找单词字符。字母 数字 _
W 查找非单词字符。非 字母 数字 _
d 查找数字。
D 查找非数字字符。
s 查找空白字符。
S 查找非空白字符。
b 匹配单词边界。
B 匹配非单词边界。
查找 NUL 字符。
n 查找换行符。
f 查找换页符。
r 查找回车符。
t 查找制表符。
v 查找垂直制表符。
量词:
n 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
3 支持正则表达式的 String 对象的方法
使用字符串对象的相关方法按照正则表达式所描述的规则去搜索、匹配、替换、分割.
search 检索与正则表达式相匹配的值。
match 找到一个或多个正则表达式的匹配。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。
4 RegExp 对象方法
使用正则表达式对象(RegExp)的相关方法来对指定字符串进行格式的验证.
compile 编译正则表达式。
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。
5 例子
var v = "aa1a";
//字符串中包含数字就行
var reg = /d/;
console.log(reg.test(v));
var v = "aaa1111aa";
//字符串中连着出现4次(或者更多)数字即可
var reg = /d{4}/;
console.log(reg.test(v));
var v = "1111";
//^表示开头 $表示结尾
//开头和结尾直接必须连续出现4次数字
var reg = /^d{4}$/;
console.log(reg.test(v));
var v = "1aaa2345";
//开头一个非0数字,后面跟任意字符0-n个,最后4个数字结尾
var reg = /^[1-9]{1}.*d{4}$/;
console.log(reg.test(v));
var v = "aaredaa";
//red go yes 三个单词任意匹配
var reg = /(red|go|yes)/;
console.log(reg.test(v));
var v = "a1";
//开头是一个字符 结尾是一个数字(一共俩个字符)
var reg = /^wd$/;
console.log(reg.test(v));
var v = "aasd11111";
//开头是字符(1-n个)
var reg = /^w d$/;
console.log(reg.test(v));
var v = "aasd )_###11111";
//开头是字符(1-n个) 中间随意匹配
var reg = /^w (.*) d$/;
console.log(reg.test(v));
//email验证
var v = "cuilue@briup.com";
var reg = /^w @w (.[A-z]{2,3}){1,2}$/;
console.log(reg.test(v));