一份殿、對(duì)象字面量增強(qiáng)寫(xiě)法:
var name = '小明'
var age = 18
var height = 175
var obj = { //直接把name膜钓、age、height給obj對(duì)象
name,
age,
height
}
二卿嘲、可變參數(shù) "..." 的用法:(收集參數(shù)颂斜、展開(kāi)數(shù)組)
//例1:
sum(...num){//可以接受多個(gè)參數(shù),將參數(shù)都放進(jìn)了一個(gè)數(shù)組
var sum = 0;
for(var i=0; i < num.length; i++){
sum+=num[i];
}
return sum;
}
//例2:
fun(a,b, ...args){//當(dāng)不知道有多少參數(shù)傳進(jìn)來(lái)時(shí)拾枣,接收剩余的參數(shù)
console.log(a)
console.log(b)
console.log(args)
}
//例3:
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = [...arr1, ...arr2];//[1,2,3,4,5,6]展開(kāi)數(shù)組
三沃疮、in跟of的簡(jiǎn)潔遍歷:
let list = [
{
name:"老王",
age:19
},
{
name:"賈榜",
age:20
},
{
name:"波波",
age:18
},
]
//方式一:in
for(let i in list){
console.log(list[i].name)
}
//方式二:of
for(let item of list){
console.log(item.name)
}
四、高階函數(shù):
1梅肤、filter:(過(guò)濾器)
var nums = [12, 354, 5267, 123, 23, 1, 13];
var newNums = nums.filter(function(n){
return n < 100; //一定要返回一個(gè)boolean值
})
//計(jì)算后newNums 的值是[12, 23, 1, 13]
2司蔬、map:(映射:一個(gè)對(duì)一個(gè))
var nums = [12, 23, 1, 13];
var newNums = nums.map(function(n){
return n * 2; //每一次返回的是數(shù)組的新值
})
//newNums:[24, 46, 2, 26]
3、reduce:(匯總:一堆對(duì)一個(gè))
var nums = [12, 23, 1, 13];
//求和運(yùn)算
var sum = nums.reduce(function(preValue, num, index){//index是循環(huán)下標(biāo)
return preValue+num; //每一次preValue是函數(shù)上次返回的值
})
//也可以指定傳入的第一次結(jié)果
var sum = nums.reduce(function(preValue, num, index){
return preValue+num; //第一次的值是后面的0
}, 0)
//sum最后的值是:49
4姨蝴、forEach:(迭代)
//將a數(shù)組中的數(shù)依次加上b數(shù)組中的數(shù)
let a = [1, 2, 3, 4, 5];
let b = [12, 42, 32, 41, 95];
a.forEach((item, index) => {
a[index] = item + b[index];
});
//a:[13, 44, 35, 45, 100]
五俊啼、" ` "模板字符串的用法:
優(yōu)點(diǎn)1:里面的字符串可以換行
優(yōu)點(diǎn)2:字符串中可以插入變量:
var x = 1, y = 2;
`${x} + ${y} = ${x + y}`;
六、箭頭函數(shù) =>:
1左医、基礎(chǔ)用法:
//-------傳統(tǒng)寫(xiě)法-------
function sum(num1, num2){
return num1 + num2
}
//-------箭頭函數(shù)---------
let sum = (num1, num2) => {
return num1 + num2
}
//或者簡(jiǎn)寫(xiě)
let sum = (num1, num2) => num1+num2 //如果函數(shù)體只有一行代碼可以直接這樣簡(jiǎn)寫(xiě)授帕,會(huì)自動(dòng)返回。如果沒(méi)有返回值則返回undefined
//如果只有一個(gè)參數(shù)可以不要括號(hào)
let add = num => num+num
2浮梢、箭頭函數(shù)中的this指的是誰(shuí):
向外層作用域中跛十,一層層查找this,直到有this的定義
七秕硝、字符串方法startsWith偶器、endsWith
let url1 = "git://abcd.com";
url.startsWith("http://") //false
let url2 = "swiper.png";
url.endsWith('.png') //true(可以用來(lái)判斷擴(kuò)展名確定文件類型)
八、面向?qū)ο螅?/h5>
1、類的定義:
老版本寫(xiě)法:
function User(name, age) {
this.name = name;
this.age = age;
}
User.prototype.showName = function () {
console.log(this.name);
};
User.prototype.showAge = function () {
console.log(this.age);
};
let user1 = new User("小敏", "20");
user1.showName();
user1.showAge();
es6寫(xiě)法:
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
showName() {
console.log(this.name);
}
showAge() {
console.log(this.age);
}
}
let user1 = new User("小敏", "20");
user1.showName();
user1.showAge();
老版寫(xiě)法的缺點(diǎn):
①類跟構(gòu)造函數(shù)不分(User既是類又是構(gòu)造函數(shù))
②一個(gè)類的寫(xiě)法散開(kāi)了(強(qiáng)行用prototype湊出的一個(gè)類)
2屏轰、繼承:
老版寫(xiě)法:
function VipUser(name, age, level) {
User.call(this, name, age);
this.level = level;
}
VipUser.prototype = new User();
VipUser.prototype.constructor = VipUser;
VipUser.prototype.showLevel = function () {
console.log(this.level);
};
es6寫(xiě)法:
class VipUser extends User {
constructor(name, age, level) {
super(name, age);
this.level = level;
}
showLevel() {
console.log(this.level);
}
}