一、Map和Set
1、Map
用键值对表示,和java的Map类似
get
方法取值 set
方法修改值 delete
方法删除值
所有的方法都是操作键
2、Set
相当于去重数组
var set = new Set([1,2,3,3,3]);
查看一下set,会发现只输出了 [1, 2, 3]
//添加字段
set.add(field);
//删除字段
set.delete(field);
3、遍历
for(let filed in set){
代码块
}
for(let filed of set){
代码块
}
这两种类似于增强for的结构,要用下一种(of),如果用了in,遍历出来的就是下标,类似于0,1,2,3……,of遍历出来的就是字段。
二、函数
function 函数名(参数){
(函数体)
return 返回值;
}
这是偏向后端的定义方式,当然还有前端特有的定义方式:
var 函数名 = function(参数){
(函数体)
return 返回值;
}
异常
函数体内可以用throw
手动抛出异常
arguments
js赠送的参数,代表所有传入的参数汇成的数组。
rest
var method = function(a,b,...rest){
···
}
可变长参数,必须写在最后面。
三、作用域
1、在方法内部的变量到外面就不能使用了
function method(){
var x = 1;
x = x + 1;
}
x = x + 2;//Uncaught ReferenceError: x is not defined
使用的话会报错:Uncaught ReferenceError: x is not defined
2、在js里查找调用的变量的过程,类似于java的双亲委派机制,从内到外查找。如果内外都有某个变量,调用内部的那个。
function a(){
var x = 1;
console.log(x);
function b(){
var x = 2;
console.log(x);
}
b();
}
a();
方法b内引用了变量x,先从b里找x,找到后用b里的x,而不用b外a内的x。
输出:1 2
function a(){
var x = 1;
console.log(x);
function b(){
//var x = 2;
console.log(x);
}
b();
}
a();
注释掉b内的x后,输出:1 1
3、window对象
所有的全局变量都会被加入到window对象里。
let关键字
建议使用let关键字定义局部作用域的变量
const(常量)
ES6引入的
用const定义的变量不可再次修改,官方名称叫 只读变量 。
apply
可以修改this指针的指向
方法A.apply(对象B,参数列表);//空参列表是[]
这样,方法A的this指针就指向了对象B。
类似于java反射中的invoke()方法
四、内部对象
通过typeof
可以知道对象的类型
typeof 123;
//"number"
typeof '123';
//"string"
1、Date
常用方法:
var date = new Date();
var year = date.getFullYear();//年
var month = date.getMonth();//月 0~11
var date_of_month = date.getDate();//日
var day = date.getDay();//星期几
var hour = date.getHours();//时
var minutes = date.getMinutes();//分
var second = date.getSeconds();//秒
var time = date.getTime();//时间戳
时间戳可以作为Date()方法的参数,以获取更准确的时间。
2、JSON
格式:
- 对象都用 { }
- 数组都用 [ ]
- 所有的键值对都用 key:value
对象 转 json字符串:
var json对象 = JSON.stringify(js对象);
json字符串 转 对象:
var js对象 = JSON.parse(json对象);
//由于json对象的本质是字符串,所以传参的时候可以直接传json对象的内容,用''或""包起来
五、类
用class定义类,实例化和继承方法和java一样。构造器是constructer
class Father{
constructor(name) {
this.name = name;
}
say(){
alert(this.name);
}
}
class Son extends Father{
constructor(name) {
super(name);
}
say() {
super.say();
}
}
var p1 = new Father("dad");
var p2 = new Son("baby");