ECMAScript

本文深入讲解了JavaScript ES6中的新特性,包括let和const的局部作用域与不可重复声明,解构赋值在数组和对象中的应用,字符串的trim、repeat等方法,数组的includes、fill、set去重及filter去重,函数的默认参数、扩展参数和不定参数,以及箭头函数的使用。此外,还介绍了类与继承的概念,并通过实例展示了类小游戏的实现。
摘要由CSDN通过智能技术生成

变量声明

let
  • 局部作用域(在一对{}启用)
  • 不能变量提升
  • 在一个作用域里不能重复声明
const
  • 局部作用域(在一对{}启用)
  • 不能变量提升
  • 在一个作用域里不能重复声明
  • 变量名建议大写
  • 声明必须赋值
  • 值类型不允许修改

解构

  • 把数组,对象,解构为单独的变量(…rest剩余值)
var arr = [1,2,3,4,5,6,7,8];
var [a,b,...rest] = arr;
console.log(a,b,rest);
			
var [a,,,b=10] = [1,2,3,4];
console.log(a,b);
  • 效果图
    在这里插入图片描述
    在这里插入图片描述

对象解构

  • 和数组解构一致;…rest剩余,没有顺序
var obj = {name:"mumu",age:"18",eye:2,leg:8};
var {age,name,eye,leg=2,...rest} = obj;
console.log(name,age,leg,rest);
  • 效果图
    在这里插入图片描述

对象简写

  • 如果对的键名与值一致,可以省略,函数可以省略function关键字
 var age = 18;
 var name = "mumu";
 var obj = {name:name,age:age,say:function(){ alert(this.name+this.age)}}
 var obj2 = {name,age,say(){ alert(this.name+this.age)}} // 简写
  • 效果图
    在这里插入图片描述

字符串相关方法

  • 01 遍历字符串
var str = 'yue𠮷口'for(var i =0;i<str.length;i++){
	console.log(str[i])
}
 for(let s of str){
	console.log(s)
}

在这里插入图片描述

  • 02 trim 移除空格(trimLeft trimRight)
var str = '     我爱我的祖国    ';
console.log(str);
console.log(str.trim())

在这里插入图片描述

  • 03 repeat重复
console.log("我爱你\n".repeat(100))

在这里插入图片描述

  • 04 查找是否包含 indexOf lastIndexOf 找到返回下标,找不到返回-1 includes是否包含 返回true或false
var str = "台湾是中国的一个省份";
alert(str.includes("福建"))

在这里插入图片描述

  • 05 检测:startsWith 以…开头 endsWith 以…结尾
var str = "我特别喜欢和你做朋友"
alert(str.startsWith('你'));

在这里插入图片描述

  • 06 填充: padStart(位数,填充字符串) padEnd()
var str = '1';
console.log(str.padStart(3,'0'))
console.log(str.padEnd(10,'0'))

在这里插入图片描述

  • 07 字符串模板(``),用${ }定义js,可以随意换行,可以随意使用符号
var s = '花轿';
var str = `那天,他坐上${s.length<3?'八抬大轿':'奔驰加长版'},'"微笑"'
			
			着就看不见了`;
console.log(str);

在这里插入图片描述

数组

  • 01 includes 检查
let arr = [5,"喜欢","吃肉"];
alert(arr.includes(6))

在这里插入图片描述

  • 02 fill 填充
var arr =[]; 
// 设置长度
arr.length = 5;
// 填充数组
arr.fill("填充内容",0,5); 
// 输出
console.log(arr) 

在这里插入图片描述

  • 03 set 去重
var arr = [1,2,3,1,2,3,2,1,1];
// 使用set去重
// 定义一个不重复的列表
var s = new Set(arr);
 // 把set转换为数组
var arr2 = Array.from(s);
// 输出
console.log(arr2);
// 在数组里面展开一个set
var arr3 = [...new Set(arr)];
console.log(arr3);

在这里插入图片描述

  • 04 filter 去重
// filter 去重的原理:indexOf下标与当前下标对比
var arr2 = arr.filter(function(item,index){
	// return true保留,return false移除
	// indexOf 得到下标等于index当前下标 保留
	if(arr.indexOf(item)==index){
		return true;
	}else{
		return false;
	}
})
console.log(arr2)

在这里插入图片描述

函数参数

  • 01 默认参数 函数的默认参数
function say(color = '黑'){
	alert('没有你的世界是'+color+'色的');
}
say();
say('五彩');

在这里插入图片描述
在这里插入图片描述

  • 02 扩展参数(执行) 函数的拓展实参(调用)
function metting(a1,a2,a3){
	console.log(`今天来参加,中共中央政治局常委会的有,${a1},${a2},${a3}同志`);
}
var arr = ["小丁","大段","成龙","小小曾"];
// 在函数调用的时候把数组传入拓展
metting(...arr)
// metting.apply(null,arr);

在这里插入图片描述

  • 03 不定参(定义) 函数的不定参数(定义的时候)
function add(...list){
	// 把参数list列表累计相加弹出
	// alert(list,reduce((a,b)=>a+b))
	// arguments,关键字,指函数的参数列表,Array.from把类似数组的元素转换为数组
	var re = Array.from(arguments).reduce((a,b)=>a+b);
	alert(re);
}
add(15,20,30)

在这里插入图片描述

箭头函数

  • 01 箭头函数就是函数的简写形式
// 箭头左边是参数
// 箭头右边是返回值,也是函数要执行的代码
var fun = function(str){return "love"+str;}
var fun1 = str=> "love"+str;
  • 02 参数:0个或多个用()包裹
// 例1
var fun = function(a,b){alert(a+b)}
var fun2 = (a,b)=>alert(a+b)
// 例2
var fun = function(){alert("我爱ES6")}
var fun2 = ()=>alert("我爱ES6")
  • 03 返回值
// 如果返回的是一个对象,那么用括号包裹
var fun = function(){return {name:"mumu",age:18}}
var fun2 = ()=>({name:"mumu",age:18})
console.log(fun2());
  • 04 执行语句:如果执行有多行,返回语句如果用return 执行语句要用{}包裹
var fun = function(str){
	if(str.includes("俄罗斯")){
		return "沙皇大帝"
	}else{
		return "金帐汗国"
	}
}
// 
var fun2 = str=>{
	if(str.includes("俄罗斯")){
		return "沙皇大帝"
	}else{
		return "金帐汗国"
	}
}
alert(fun2('puting'))
  • 05 箭头函数的this指向上一层作用域的this
  • 06 箭头函数不能new 当构造函数

class类

类就是function 构造函数的语法糖(简写) 本质上还是函数typeof class
class类小游戏

class Box{
	// 初始化实例(构造函数)
	constructor(life=1,x=0,y=0){
		// 生命力
		this.life = life;
		// 墙的x与y值
		this.x = x;
		this.y = y;
		// 创建一个节点
		var dom = document.createElement("div");
		// 插入节点
		document.body.appendChild(dom);
		// 指定实例的dom
		this.dom = dom;
		// 更新dom
		this.updateDom();
		// 给dom添加点击事件
		this.dom.addEventListener("click",()=>{
			// 箭头函数,this指向上一层作用域this(Box实例)
			// 让生命值--
			this.life--;
			// 如果生命值小于等于0,让dom从页面删除
			if(this.life <= 0){this.dom.remove(); }
			// 更新dom
		this.updateDom();
	})
	}
	updateDom(){
					// 根据生命值的不一样,赋值给它不同的颜色
		if(this.life<3){
			this.color="#c83a0b";
		}else if(this.life<=5){
			this.color="#791810";
		}else{
			this.color="#e3e3e3";
		}
		// 修改dom的样式:宽;高;背景色;位置;左;顶
		this.dom.style.width = "100px";
		this.dom.style.height = "100px";
		this.dom.style.backgroundColor = this.color;
		this.dom.style.position="absolute";
		this.dom.style.left = this.x+"px";
		this.dom.style.top = this.y+"px";
	}
}
// Box是类:b1,b2,b3类的实例
var b1 = new Box();
// 当实例的时候会先执行constructor创建一个实例对象,也会执行updateDom更新dom
var b2 = new Box(10,100,0);
var b3  = new Box(4,200,0);
// 创建一个新的MBox 可以移动box 继承Box
// 自动移动(从上掉下来)
// 继承Box
class MBox extends Box{
	constructor(life=1,x=0,y=0){
		// super调用父构造函数的方法
		super(life,x,y);
		// 停止动画
		this.id = null;
		// 自动向下移动
		this.autoMoveDown();
	}
	autoMoveDown(){
		this.id = setInterval(()=>{
			// 更改y值
			this.y+=2;
			// 更新dom(继承Box)
			this.updateDom();
		if(this.y>window.innerHeight){
				// 如果操作了窗口的高,移除
				this.dom.remove();
				// 停止间隔调用
				clearInterval(this.id);
			}
		},16)
	}
}
// 实例化MBox
var b4 = new MBox(4,300,0)
var b5 = new MBox(10,400,-200)
var b6 = new MBox(2,500,-300)
var b7 = new MBox(3,600,-400)

效果图展示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值