目录
JavaScript对象用来干嘛的?
允许创建用户自定义和组合类型等其他能简化JavaScript的一系列操作。
8种核心对象:
核心对象 | 简要说明 |
String | 字符对象 |
Number | 数字对象 |
Boolean | 布尔对象 |
Math | 用于执行数学运算(无法new) |
Array | 创建数组对象 |
Date | 创建时间对象 |
Object | 包含由JavaScript对象所共享的基本功能,并提供生成其他对象的模板和基本操作方法 |
RegExp | 正则表达式 |
1.String对象:
属性:length(返回字符串长度);
1.1、charAt(num):返回索引(下标)位置的字符。如果num是不字符串中的有效索引则返回-1;
简单语法:变量.charAt("下标");
<script>
let a = "charAt";
alert(a.charAt(3));
</script>
1.2、charCodeAt(num):与charAt使用相同,但返回的是对应ASCll码;
简单语法:变量.charCodeAt("下标");
<script>
let a = "charAt";
alert(a.charCodeAt(0));
</script>
1.3、fromCharCode(num):返回ASCll对应字符;
简单语法:String.fromCharCode("变量保存的ASCll码或是直接ASCll码");
<script>
let a = "charAt";
let b=a.charCodeAt(0);
alert(String.fromCharCode(b));
</script>
1.4、concat(string2):连接字符串并返回新字符串;
简单语法:需要连接的变量.concat(需要被连接的变量);
<script>
let a="con";
let b=a.concat("cat");
alert(b);
</script>
1.5、
1.5.1:indexOf(string):返回指定字符第一次出现的下标;
简单语法:变量.indexOf("指定字符");
<script>
let a="indexof";
let b=a.indexOf("x");
alert(b);
</script>
1.5.1:indexOf(string,num):多了个指定下标的参数,如果指定下标的值不匹配,会继续往后找匹配值,没有返回-1;
简单语法:变量.indexOf("指定字符",下标);
<script>
let a="indexofx";
//从下标6往后找,
let b=a.indexOf("x",6);
alert(b);
</script>
1.6、lastIndexOf(string):返回指定字符最后一次出现的下标;
简单语法:变量.lastIndexOf("指定字符");
<script>
let a="indexofx";
//最后一个出现的是下标为7的x;
let b=a.lastIndexOf("x");
//从下标6开始往前找就是下标为4的x;
let b1=a.lastIndexOf("x",6);
alert(b+"\n"+b1);
</script>
1.7、replace(regExpression,string2):替换字符;
简单语法:变量.replace("替换目标"或是"正则表达式","替换字符");
<body>
<p>你好</p>
<script>
let a = "ab字符";
//
let b = a.replace("ab","写个");
document.getElementsByTagName("p")[0].innerText = b;
</script>
</body>
1.8、split(separetor):分割字符;
简单语法:变量.split("从什么开始分割");
<script>
let a = "127.0.0.0.1";
//分割后返回一个数组
let b = a.split(".");
//遍历
for (let i = 0; i < b.length; i++) {
console.log(b[i]);
}
</script>
1.9、字符串截取
1.9.1:substring(num1,num2):返回目标字符串中指定位置的字符串;
简单语法:变量.substring(开始下标,结束下标前停);
<script>
let a = "127.0.0.0.1";
//从下标3开始,下标10直接结束
let b = a.substring(3,10);
console.log(b);
</script>
1.9.2.:substring(num):
简单语法:变量.substring(开始下标)一直往后;
2.0、toLowerCase():将字符串的全部字符转化为小写;
简单语法:变量.toLowerCase();
<script>
let a = "ABCDE";
console.log(a.toLowerCase());
</script>
2.1、toUpperCase():将字符串的全部字符转化为大写;
简单语法:变量.toUpperCase();
<script>
let a = "abcde";
console.log(a.toUpperCase());
</script>
2.2、valueOf():返回String对象的原始值;
简单语法:变量.valueOf();
<script>
let a = "abcdef";
console.log(a.valueOf());
</script>
2.Number对象:
定义方式:
<script>
//三种定义方式
let num1=new Number(5);
let num2=Number(10);
let num3=15;
console.log(num1+"\n"+num2+"\n"+num3);
</script>
Number的对象属性:
JavaScript能表示的最大数和最小数
<script>
let num3 = 15;
console.log(num3.MAX_VALUE);//这里是undefined
//该属性是Number对象的静态属性,
//只能通过Number.MAX_VALUE显示
console.log("JavaScript能表示的最大数:"+Number.MAX_VALUE);
//表示JavaScript中能表达的最大数
//大于表示无穷大;
console.log("JavaScript能表示的最小数:"+Number.MIN_VALUE);
</script>
NaN:表示非数字值
<script>
let sr = "我可不是数字";
//一般用于数字校验
if (sr!=NaN) {
console.log(sr+"不是数字");
}
</script>
NEGATIVE_INFINITY 和POSITIVE_INFINITY
<script>
console.log(Number.NEGATIVE_INFINITY);
//代表负无穷大。溢出返回-Infinity
console.log(Number.POSITIVE_INFINITY);
//代表正无穷大.溢出返回Infinity
</script>
方法:
toString()
数值转换成一个字符串,使用IRadix指定基数,默认为十进制
<script>
let a=1000;
console.log(typeof a.toString());
</script>
toFixed(x)
数值转换成一个字符串,x是小数显示多少位数;
<script>
let a=1000;
//2位小数
console.log(a.toFixed(2));
</script>
toExponential(x)
对象值转成指数计数法,x是小数显示多少位数;
<script>
let a=1000;
//2位小数
console.log(a.toExponential(2));
</script>
toPrecosion(x)
把数值格式化为参数x给定的长度包括小数
<script>
let a=1000;
console.log(a.toPrecision());
</script>
valueOf 返回一个Number对象的原始数值
<script>
let a=1000;
console.log(a.valueOf());
</script>
3.Boolean对象:
参数只有false和true
0、null、undefined的情况下会得到false,否则值为true;
<script>
let a=new Boolean();
a=false;
console.log(a);
</script>
4.Math对象:
直接上代码逐一解释
<script>
let a=-100;
//1.Math.abs(num):返回num的绝对值
console.log(a+"绝对数:"+Math.abs(a));
//2.Math.round(num):四舍五入
let mr=2.4,mr2=2.5;
console.log(mr+"四舍五入"+Math.round(mr));
console.log(mr2+"四舍五入"+Math.round(mr2));
//3.Math.ceil(num):向上取整//
//通俗一点:
//c=2.1,c输出变成3;有小数默认向上取整。没有就是本身;
let b=2.3;
console.log(b+"向上取整:"+Math.ceil(b));
//4.Math.floor(num):向下取整
//和上面那个恰好相反
let f=5.2;
console.log(f+"向下取整:"+Math.floor(f));
//5.Math.random():返回0-1的随机数(包括小数)
//可以通过上面两个方法增大随机数
//下面举例
console.log("10-30随机生成:"+(Math.ceil(Math.random()*21)+10));//10-30(向下取整)
console.log("31-50随机生成:"+(Math.floor(Math.random()*20)+30));//31-50(向上取整)
//基本公式:(Math.random()*n)+m;
//说到这里可能还是云里雾里,我通俗的说一下逻辑
//首先:Math.random函数是随机0-1;默认这里有2个值(0和1);
//让函数自定义范围,只需要对它的2个值进行增值即可;再通过向上取整或是向下取整方法去除小数
//0*20=0;1*20=20;这里就变成了0-20;
//括号外再+30 //0+30=30;20+30=50;
//到这里0和1就增值为20-50;
//6.Math.sqrt(num);//返回num的平方根
let ms=4;
console.log(ms+"的平方根是:"+Math.sqrt(ms));
//7.Math.max(num1,num2):返回两者中大的数
let num1=5;
let num2=5.1;
console.log(num1+"和"+num2+"中"+Math.max(num1,num2)+"大");
//8.Math.min(num1,num2):返回两者中小的数
console.log(num1+"和"+num2+"中"+Math.min(num1,num2)+"小");
//9.Math.pow(num1,num2):返回两者的次方
console.log(num1+"和"+num2+"的次方是:"+Math.pow(num1,num2));
</script>
Math常用9种方法总结到这,下一个。
5.Array对象:
数组是包含基本和组合数据类型的有序序列。
直接代码段吧(看下面)
<script>
let Mya = new Array(); //吴长度
let Mya2 = new Array(4); //长度为4,无值输出三个分隔符
let Mya3 = new Array(1, 2, 3, 4, 5, 6);
console.log(Mya + "\n" + Mya2 + "\n" + Mya3)
//下标从0开始
let b = 0;
let a = ["元素1", "元素2", "元素3", "元素4", "元素5"];
for (let i = 0; i < a.length; i++) {
console.log(`下标为${b}的值是${a[i]}`);
b += 1;
}
//接下来常用方法介绍
//1.数组连接
//1.1:concat 如果数组有元素,直接会在后面增加
a = a.concat("元素6", "元素7", "元素8");
console.log(a);
//1.2:join("分隔符号(不是必须,默认是,分隔)") 把数组连接成一个字符串
console.log(a.join("-"));
console.log(typeof a.join());
//2.排序
//2.1:sort() 排序
console.log(a.sort());
//2.2:reverse() 反转数组
console.log(a.reverse());
</script>
<script>
let a=["元素1","元素2","元素3","元素4","元素5"];
//3.数组载入
//slice(从那个下标开始截取,到那个下标结束);
let a2=a.slice(0,4);
console.log(a2);
//4.数组元素添加,删除
//splice(index,howmany,item1……);
//三个参数(从什么下标开始,删除到什么地方,添加的元素);
//返回被删除了的元素
let a3=a.splice(1,3,"元素6","元素7");
console.log(a3);
console.log(a);
//输入发现只剩下2个老元素,和新添的6,7元素;
</script>
6.Date对象:
时间对象
<script>
let dt1 = new Date(); // 创建当前日期时间对象
let dt2 = new Date(100000000); //根据毫秒数构造日期时间对象
let dt3 = new Date("2020-10-12 10:20:30"); // 根据字符串创建
let dt4 = new Date(2022, 4, 10, 10, 20, 30); //5月
//在js中是用0-11代表1-12月的
// 时间转换方法
//toLocaleString():年月日+时分秒
//toLocaleDateString():年月日
//toLocaleTimeString():时分秒
console.log(dt1.toLocaleDateString());
console.log(dt1.toLocaleTimeString());
console.log(dt1.toLocaleString());
console.log(dt1.toLocaleString());
// set开头方法:用于设置日期时间各个部分的值
let dt5 = new Date();
dt5.setFullYear(2000); // 设置年
//js中用0~11代表1到12月
dt5.setMonth(10); // 设置月(11月)
dt5.setDate(5); // 设置日
dt5.setHours(10); // 设置时
dt5.setMinutes(20); // 设置分
dt5.setSeconds(30); // 设置秒
dt5.setMilliseconds(40); // 设置毫秒
console.log(dt5.toLocaleString());
//get 开头的方法:获取日期时间对应部分的方法
let y = dt5.getFullYear();//年
let m = dt5.getMonth() + 1;//月
let d = dt5.getDate();//日
let h = dt5.getHours();//时
let mm = dt5.getMinutes();//分
let ss = dt5.getSeconds();//秒
let wk = dt5.getDay(); // 返回星期(0-代表星期天,1-星期一,。。。。。)
let weeks = ["日", "一", "二", "三", "四", "五", "六"];
//用下标的方式输出xxxx年x月x日 时:分:秒
let myDate = y + "年" + m + "月" + d + "日" + " " + h + ":" + mm + ":" + ss + " 星期" + weeks[wk];
console.log(myDate)
</script>
7.Object对象:
自定义对象:
//1.定义对象构造函数
function School(name, address, grade, number) {
//创建对象
this.Name = name;
this.Address = address;
this.Grade = grade;
this.Number = number;
//也可以写函数
this.Cs = function() { //匿名函数
console.log(`姓名:${this.Name}\n地址:${this.Address}\n学历:${this.Grade}\n人数:${this.Number}\n`);
}
this.Cs2 = cs2;
}
//通过构造函数初始化对象
let a = new School("王五", "中国", "小学", "2000");
a.Cs(); //调用方法
function cs2() {
console.log(`姓名:${this.Name}\n地址:${this.Address}\n学历:${this.Grade}\n人数:${this.Number}\n`);
}
let b = new School("李四", "中国", "初中", "3000");
b.Cs2();
//也可以通过数组存储多个对象
let ar = [
new School("张三", "中国", "高中", "400"),
new School("张四", "美国", "高中", "300"),
new School("张五", "美国", "高中", "200"),
]
let ar2 = [{
name: "李四",
address: "美国",
grade: "高中",
number: "200"
},
{
name: "李五",
address: "美国",
grade: "高中",
number: "100"
},
{
name: "李六",
address: "美国",
grade: "高中",
number: "50"
}
]
for (let i = 0; i < ar.length; i++) {
ar[i].Cs();
}
//下标和变量指定再初始化对象
for (let j = 0; j < ar2.length; j++) {
let s = new School(ar2[j].name,ar2[j].address,ar2[j].grade,ar2[j].number);
s.Cs();
}
//2.对象字面量
//上面的ar2数组其实就是对象字面量
//直接初始化对象来创建自定义对象
let obj={
name:"北京大学",
address:"北京",
grade:"高等学府",
number:"200",//逗号隔开,最后一个对象不需要逗号
//也可以写函数
show:function(){
console.log(`机构名称${this.name}\n地址${this.address}\n教育层次${this.grade}\n在校人数${this.number}\n`)
}
}
obj.show();
</script>
8.RegExp对象:正则表达式
由^开始$结束。基本写法:/^里面规则$/
字符 | 描述 |
\ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符 例如:'n'匹配字符'n'。'\n'匹配一个换行符。序列'\\'匹配\,而"\("则匹配"("。 |
[xyz] | 字符集合。匹配[]包含的任意一个字符。例如:[abc],可以匹配a或b或c |
[^xyz] | 非字符集合,匹配[]未包含的任意一个字符。例如:[^abc],除了这三都匹配。 |
[a-z] | 字符集合,匹配a-z范围内的任意小写字母 |
[^a-z] | 非字符集合,除了a-z范围内的任意小写字母都可以匹配 |
\w | 匹配任意单个的字母、数字、或下划线。等于[a-zA-Z0-9] |
\W | 匹配任意单个的非字母、数字、或下划线。等于[^a-zA-Z0-9] |
\d | 匹配一个数字。等于[0-9] |
\D | 匹配一个非数字。等于[^0-9] |
. | 匹配任意一个单字符 |
x|y | 匹配x或y。'(x|f)ood' 则匹配"xood"或是"food" |
字符 | 描述 |
* | 匹配前面的子表达式0次或多次。例如xy*能匹配“x”以及“xyy”。等价于{0,}。(简单来说就是能匹配最少0次,最多n次) |
+ | 匹配前面的子表达式一次或多次。例如:'zx+'能匹配"zx"以及"zxx",但不能匹配"z"。+等于{1,}。(+前的表达式必须完全匹配一次) |
? | 匹配前面的子表达式0次或一次。例如:'do(es)?' 可以匹配"do"或"does"。?等于{0,1} |
{n} | n是一个非负整数。匹配确定的n次。例如:'o{2}' 不能匹配"Bob" 中的'o',但能匹配"food" 中的所有o。(简单来说就是只能出现2个o) |
{n,} | n是一个非负整数。至少匹配的n次。例如:'o{2,}' 不能匹配"Bob" 中的'o',但能匹配"foooooood" 中的所有o。(简单来说就是至少要有2个o) |
{n,m} | m和n都是非负整数,其中n<=m。最少匹配n次,最多匹配m次。 例如:o{1,3}将匹配"fooooood"中的前三个o。"o{0,1}"等于'o?'。 请注意逗号和2数之间不能有空格。 |
字符 | 说明 |
() | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,() |
[ | 标记一个中括号表达式的开始。[] |
{ | 标记限定符表达式的开始。{} |
| | 指明2项之间的一个选择。x|y |
常用方法:
1.test();
<script>
//匹配大小写字母和数字任意次
let rg = /^\w*$/
let a = "你好";
let a2="abcd213";
//1.test();
//正则变量.test(需要校验的值);
//返回Boolean。查找对应的字符串中是否存在与模式中。
//true(匹配成功),false(匹配失败);
console.log(a+":"+rg.test(a));
console.log(a2+":"+rg.test(a2));
</script>
2.exec();
<script>
//匹配大小写字母和数字任意次
let rg = /^\w*$/
let a = "你好";
let a2 = "abcd213";
//2.exec();
//exec有4个属性:
//input:整个被搜索的字符
//index:声明匹配文本的第一个字符位置
//lastIndex:匹配的子字符串的最后一个字符的下一次字符位置
//length:数组长度
//返回当前的匹配结果,一个数组。其中存放匹配结果。
//第0个元素是与正则表达式相匹配的文本
//第1个元素是与RegExp的第1个子表达式相匹配的文本(有的话)
//第2个元素是与RegExp的第2个子表达式相匹配的文本(有的话),以此类推
//如果未找到匹配结果返回null
console.log(a + ":" + rg.exec(a));
console.log(a2 + ":" + rg.exec(a2));
//在构造RegExp对象时,还可以指定参数。
//i:执行对大小写不敏感
//g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
//m:执行多行匹配
//let str="1c1b1a";
//let reg=new RegExp("1.","g");
/*
let arr=reg.exec(str);
console.log(arr.length);//1
console.log(arr[0]);//1c
console.log(arr.input);//1c1b1a
console.log(arr.lastIndex);//2
console.log(arr.index);//0
*/
</script>
3.match();
<script>
//匹配大小写字母和数字任意次
let rg = /^\w*$/
let a = "你好";
let a2 = "abcd213";
//3.match();
//可在字符串内检索指定的值,
//或找到一个或多个正则表达式的匹配。
//类似indexOf()和lastIndexOf();
//不过返回的是值,而不是字符下标
console.log(a + ":" + a.match(rg));
console.log(a2 + ":" + a2.match(rg));
</script>
结束