add(x):添加值
has(x):判断x是否在集合中,返回布尔型
delete(x):删除集合中的元素
clear():清空集合
console.log(s1.keys()) //通过迭代器(遍历器Iterator)来遍历集合中的元素
console.log(s1.values()) //Set集合没有键只有值(即键和值是相同的),因此keys遍历和values遍历结果是一样的
console.log(s1.entries()) //遍历键值对
A、[…集合名]
B、map遍历:
set = new Set([...set].map(x => x*2)) //通过map遍历集合中的元素,让每个元素乘以2
C、filter过滤集合元素
set = new Set([...set].filter(x => (x%2)==0)); //遍历set集合,并将集合中的偶数全部过滤出来
1、集合中的元素只能是对象,不能是其他类型
2、Node的垃圾回收机制,不考虑WeakSet中元素的回收。
let ws = new WeakSet({"name":"张三"})
function 函数名([参数]){
函数体语句;
}
ES6支持默认参数的函数
function testFun(x=21,y=19){
return x+y;
}
事件名 = 函数名([参数])
testFun(45,78)
注意: 默认参数函数的应用:
//默认参数的函数
function testArgs(x=21,y=19) { //x,y参数带有默认值
return x+y;
}
//调用函数
let s1 = testArgs();
console.log("无参函数的调用结果:"+s1);
let s2 = testArgs(78,56);
console.log("有参函数的调用结果:"+s2);
let s3 = testArgs(120);
console.log("传一个参数:"+s3);
可以替代ES5中的arguments对象
function testSum(...values) {
let sum = 0;
for(let k of values){
sum = sum+k
}
return sum;
}
console.log("rest参数:"+testSum(2,4,6));
var 变量名 = function([参数]){
函数体语句;
}
强调:
形参:形式上的参数,只是占位符。通常在函数定义(声明)时出现函数首部
实参:实在参数,在函数调用时出现在函数首部的参数。
使用箭头符号(=>)声明的函数
(1)无参的:
var 变量 = ()=> {
函数体语句
}
(2)带有一个参数:
var 变量 = (arg)=> {
函数体语句
}
(3)多个参数:
var 变量名 = (x1,x2)=> {
函数体语句
}
//高阶函数:把abs函数作为参数
function diffAvg(m,n,fn){
return fn(m-n);
}
高阶函数的调用:
let k = diffAvg(45,78,Math.abs)
console.log("高阶函数:"+k);
例如:求出租车费用问题
var basePrice = 10.00; //起步价
var baseMiles = 3.00; //起步里程
function taxiPrice(unitPrice,Mileage) {
function totalPrice() { //计算总费用
if(Mileage > baseMiles){
return Mileage*unitPrice; //里程大于起步里程
}else{
return basePrice; //里程小于等于起步里程
}
}
return totalPrice(); //将计算的总费用返回。将函数作为返回值
}
console.log("出租费用:"+taxiPrice(2.00,6))
function Visitor(vname,sex) { //'Visitor'是类名,同时也是函数名(构造函数)
this.vname = vname;
this.sex = sex;
}
Visitor.prototype.getInfo = function () { //通过原型添加getInfo函数
return "姓名:"+this.vname+",性别:"+this.sex;
}
//创建实例对象
var visitor = new Visitor("张三","男");
console.log(visitor.getInfo())
引入类模板,使用class关键字定义类
1、事件队列:将事件放入事件队列
2、事件循环机制:对事件队列中的事件进行轮询、检查,依次处理每个事件
3、事件监听:
(1)引入事件模块:events
(2)创建事件监听对象:EventEmitter
(3)注册监听:监听不同类型的事件(使用on函数)
4、触发事件:使用emit函数
1、全局属性:
(1)__filename:指的是当前正在执行的脚本文件的名字
(2)__dirname:指的是当前正在执行的脚本文件目录(路径)
2、全局对象:
(1)console实例对象:
console.log("字符串"):输出到标准终端
console.error():输出错误信息
(2)process:进程对象
A、process.stdout:输出对象,该对象下的write方法的作用与console.log()相同
B、proce.stdin:输入对象,利用该对象可以从标准输入终端向node程序输入数据
3、全局函数:
(1)setTimeout(cb,ms):cb表示一个回调函数,ms表示时间(单位是毫秒);表示至少多少毫秒以后调用函数,返回一个可以清除的计时器对象。
(2)clearTimeout(计时器对象):清除由setTimeout创建的计时器
(3)setInterval(cb, ms):至少多少毫秒以后重复运行回调函数cb
(4)clearInterval(计时器对象):清除由setInterval创建的计时器
(5)setImmediate(cb):即时计时器,该计时器的运行没有时间间隔,创建即运行;返回计时器对象
(6)clearImmediate(计时器对象):清除由setImmediate创建的计时器
1、专门用于处理二进制数据的对象(接口);Node原生创建,可以直接使用不需要导入
2、Buffer对象又称为缓冲区对象,它有一个构造函数,由构造函数创建的对象,v8引擎会为其分配一块内存
3、Buffer中存放的数据是0~255之间的整数值(即一个字节的数据)
4、创建Buffer实例的方法:
(1)使用new运算符
var 变量 = new Buffer([参数])
(2)使用from函数
var 变量 = Buffer.from([参数])
(3)使用alloc函数
var 变量 = Buffer.alloc(size,fill)
5、将Buffer中的数据转换为字符串:使用toString函数,需要指定字符集(编码格式)
console.log(buf6.toString('utf8',0,4));
6、将Buffer转换为JSON对象
(1)JSON(JavaScript Object Notation)对象:是前后端数据交换的常用格式,是以key-value的方式保存数据,由于体积小、创建方便、解析简单,所以被广泛使用.只要应用程序需要将结构化信息作为文本进行交换或存储,即可使用它。
(2)使用Node的JSON对象进行转换:
var json = JSON.stringify(buf);
7、向Buffer中写入数据:
const buf8 = Buffer.alloc(256);
let len = buf8.write('\u00bd+\u00bc=\u00be',0); //write函数的返回值是写入的字节数
console.log(`${len}个字节:${buf8.toString('utf8',0,len)}`);
8、从Buffer中读取数据:使用不同的方法读取不同类型的数据
以上内容就是Node.js的基础知识点,如果想要通过Node.js来搭建后台服务器等需要对这部分内容进行大致了解才能准确的应用。