对象
万物皆对象
字面量
书写格式:
关键字 标识符 赋值符号 大括号 分号
let obj = {} ;
例子:
let iphone ={
name:`HW`,
size:5.0,
price:9999,
};
对象初始化
let obj ={
属性名1:属性值1,
属性名2:属性值2,
属性名3:属性值3,
属性名4:属性值4,
};
键值对
键:属性名
值:属性值
变量称为属性,函数称为方法
注:冒号右侧是否是函数
【增,删,改,查】
增
对象名.属性名=添加的内容;
改
对象名.属性名=添加的内容;(覆盖以前的,用相同的属性名)
删
delete 对象名.属性名;
遍历对象
遍历属性名
for(let items of Object.keys(obj)){
console.log(items);
}
遍历属性值
for(let items of Object.values(obj)){
console.log(items);
}
遍历键值对
for(let items of Object.entries(obj)){
console.log(items);
}
this在对象中代表当前对象
对象解构
f71和f72是自己创建的变量名,如果变量名与属性名相同的则可以缩写成属性名(属性名必须在对象里面存在的)
例子
let obj={
name:`l4`,
age:18,
sex:`ture`
}
let{name:f71,age:f72}=obj;
console.log(f71,f72);
内置对象
内置对象的属性方法
【string】
let str=`123`;
【concat 拼接】
书写格式:字符串1.concat(字符串2)
返回一个拼接后的新字符串
例子
let str1=`123`;
let str2=`HELLO`;
let str3=str2.concat(str1);
console.log(str3);//HELLO123
【substring】
如果给是负值会转化成0
例子
let str1=`123`;
let str2=`HELLO`;
let str3=str2.concat(str1);
console.log(str3.substr(3,1));//E
console.log(str3.substring(3,1));//EL
【startsWith】
判断字符串是不是以XXX开头
书写格式:字符串.startsWith(XXXX)
例子
let str1=`123`;
let str2=`HELLO`;
let str3=str2.concat(str1);
console.log(str3.startsWith(`h`));//false
【endsWith】
判断字符串是不是以XXX结尾
书写格式:字符串.startsWith(XXXX)
例子
let str1=`123`;
let str2=`HELLO`;
let str3=str2.concat(str1);
console.log(str3.endsWith(`123`));//true
【trim】
let str=` AAAAAA `
console.log(str.trimLeft());//去除左边空格
console.log(str.trimRight());//去除右边空格
console.log(str.trim());//同时去除左右
字符串的大小写转换
例子
let str=`asdASxasdADDIsdasADDDHBI`;
console.log(str.toUpperCase());//大写
console.log(str.toLowerCase);//小写
重复字符串的内容
例子
let str=`ABC`;
console.log(str.repeat(3));//ABCABCABC
【Date 日期】
例子
let day=new Date();
console.log(day.toString());//Tue Dec 22 2020 14:17:30 GMT+0800 (中国标准时间)
console.log(day.toLocaleString());//2020/12/22 下午2:20:22
console.log(day.toDateString());//Tue Dec 22 2020
console.log(day.toTimeString());//14:23:22 GMT+0800 (中国标准时间)
获取日期时间
let day=new Date();
console.log(day.getFullYear());//获取年份
console.log(day.getMonth());//获取月份(0-11月)
console.log(day.getDate());//获取日期
console.log(day.getHours());//获取时钟
console.log(day.getMinutes());//获取分钟
console.log(day.getSeconds());//获取秒钟
【Math】
随机数,四舍五入等等
正则表达式
RegExp:RegularExpression
功能:描述来一个字符串的匹配方式,即用户的输入的内容是否符合要求(规则)
声明正则表达式
1.构造函数
let re = new RegExp();
console.log(typeof re, re);//object /(?:)/
2.字面量
书写格式:
关键字 标识符 赋值符号 /正则/匹配模式
例子
g:global全局查找
let str =`3a2b3ac`;
let re = /a/g;
let result= re.test(str);
console.log(result);//true
console.log(str.match(re));//[ 'a', 'a' ]
i:insensit 不区分大小写(默认是区分大小写)
let str =`3a2b3ac`;
let re = /A/ig;
let result= re.test(str);
console.log(result);//true
console.log(str.match(re));//[ 'a', 'a' ]
m:multiline 多行匹配
let str =`3a2b\n3ac`;
let re = /^[3]/img;
let result= re.test(str);
console.log(result);//true
console.log(str.match(re));//[ '3', '3' ]
以n开头
书写格式:^[n]
以n结束
书写格式:^[n]$
正则表达式量词
贪婪匹配
{n,m}取n个满足的内容,先满足m的个数,如果不够,则取m-1个,直到m-1=n,m不再减1,即停止。
例子
let str = `1112222333334`
let re = /[0-9]{1,5}/g;
console.log(str.match(re));//[ '11122', '22333', '334' ]
【扩展】
书写格式:{n,}代表n到无穷
n(?=m)
功能:查找一个后面跟m的n,即n是查找的内容,m是对n的条件
匹配n,小括号是对n的条件
例子
let str=`1a2b3c`;
let re=/[0-9](?=b)/g;
console.log(str.match(re));
n(?!m)
功能:查找一个后面不是跟m的n,即n是查找的内容,m是对n的条件
匹配n,小括号是对n的条件
例子
let str=`1a2b3c`;
let re=/[0-9](?!b)/g;
console.log(str.match(re));
Symbol(基本数据类型)
功能:避免在新增时,更改原有的属性或方法
可以是使用Symbol(唯一性)来创建
注:Symbol后的小括号()里面的内容是对当前Symbol的解释,只能知道当前Symbol是干什么的。
例子
let DD=Symbol();
xiaolei[DD]=[`xiaoMo`];
console.log(xiaolei[DD]);
映射
非字符串类型的数据当属性名
通过set方法进行设置,get方法进行获取
例子
let f71 =new Map();
// f71.set(`name`,`ll`)
// console.log(f71.get(`name`));
f71.set(1,`ABC`);
console.log(f71.get(1));
JSON
字符串转JSON
例子
let str = `{
" name": "z3",
" age": "18",
" gender": "true"
}`;
let f71 = JSON.parse(str);
console.log(typeof f71, f71);
JSON转字符串
注意:字符串转JSON时,属性名必须是字符串
例子
let str2=JSON.stringify(f71);
console.log(typeof str2,str2);
递归
适用场景:阶乘 n*(n-1)
注:一定要有一个出口(即return具体的值)
function f71(a) {
if (a == 1) {
return 1;
}
return a*f71(a - 1);
}
console.log(f71(5));
预编译
发生在执行的前一刻
工作原理:
1.创建一个AO对象
2.形参与变量(AO对象的属性名)
3.初始化属性(即给赋值undefined)
4.实参与形参相统一
5.提升字面量声明的函数到函数第一行,函数名是AO的属性名,属性值是函数体
全局作用域
工作原理:
1.创建一个GO对象
2.var声明变量(不包含函数)(GO对象的属性名)
3.初始化属性名(即给赋值undefined)
4.提升字面量声明的函数到函数第一行,函数名是GO的属性名,属性值是函数体
注:若函数中存在一个赋值但没有关键字的变量,当函数被执行时,该变量才添加到GO