1.函数的length属性
ES5中,length代表形参(即愿望传入的参数)的数目,如function display(a,b,c){ / /} ;display.length即是3
ES6中状况有所不同:
(1)函数默许参数
指定了默许参数后,函数的 length 将返回没有指定默许参数的参数的个数
funciton display(str1='test',str2){
console.log(str1+str2);
}
display.length;//1
(2)rest(…变量名)
rest参数也不会计入length属性
funciton display(str1,...strs){
console.log(str1+str2);
}
display.length;//1
2.类数组转成真正数组的几种体式格局
ES5中:Array.prototype.slice.call();
Array.prototype.slice.call(arguments);//argemtns->Array
ES6中:
(1)Array.from()能够将相似数组的对象和可遍历的对象转换为真正的数组
var arr = Array.from(arguments);
(2)rest参数 情势:“ …变量名”重要用在将arguments对象转换为数组
把arguments类数组对象变成真正的对象:
funciton display(...arr){
//...arr替代arguments
arr instanceof Array //true
}
(3)扩大运算符:
[...arrayLive]
(4)set要领:
new Set(arrayLive);
3.运用函数函数的几点注重(重点明白)
箭头函数没有本身的this,它们的this都是外层函数的this
(1)函数体内的this对象就是定义时地点的对象,而不是运用时地点的对象
(2)不能够看成组织函数。也就是不能够运用new敕令,不然会报错
(3)不能够运用arguments对象,该对象在函数体内不存在.假如要用能够用rest参数替代
(4)不能够运用yield敕令,因而箭头函数不能做Generator函数
细致内容请参阅:http://es6.ruanyifeng.com/#do…
4.运用ES6为对象增加属性
Object.assign:用来将源对象的一切的可罗列属性复制到目的对象
语法:Object.assign(targetObj,source1,source2,…)
比方:
var target = {a:1,b:2};
var source1 = {c:3};
var source2 = {d:4};
Object.assign(target,source1,source2);
target//{a:1,b:2,c:3,d:4};
这里有一些须要注重的处所:
(1)只复制自在属性并且是可罗列的属性
(2)这里的复制是浅复制
(3)假如目的对象与原对象有同名属性,或许多个原对象有同名属性,则背面的属性会掩盖前面的属性
5.对象属性的遍历要领一览
ES5中有三种要领会疏忽enumerable为false的属性
(1)for…in轮回:遍历对象本身和继续的可罗列的属性
(2)Object.keys():返回对象本身的一切可罗列的属性的键名
(3)json.stringify():只串行化对象本身的可罗列属性
ES6中新增了两个操纵会疏忽enumerable为false的属性
(1)Object.assign():只复制对象本身的可罗列属性
(2)Reflect.enumerate():返回一切for…in会遍历的属性
属性的遍历:
ES6中有6中要领能够遍历对象
(1)for…in轮回:遍历对象本身和继续的可罗列的属性
(2)Object.keys():返回对象本身的一切可罗列的属性的键名
(3)getOwenPropertyNames():返回一个数组,包含对象本身一切的属性(不包含 Symbol属性,然则包含不可罗列属性)
(4)getOwenSymbolNames():返回一个数组,包含对象本身一切的Symbol属性
(5)Reflect.ownKeys():返回一个数组,包含对象本身一切的属性(包含Symbol和不可罗列属性)
(6)Reflect.enumerate():返回一切for…in会遍历的属性
以上6种要领配合恪守的遍历序次划定规矩:
(1)起首遍历属性名为数字的属性,根据数字递次排序
(2)其次遍历一切属性名为字符串的属性,根据字符串天生时候排序
(3)末了遍历一切属性名为symbol值得属性,根据天生时候排序
对象属性从属关系推断:
hasOwnPrototyOf():本身 可罗列
in :本身和继续
6._proto_属性
_proto_属性用来读取或许设置当前对象的prototype对象。
送上链接:https://github.com/creeperyan…