ES6 学习笔记
明确函数的多重继承
ES5 函数具有多重功能,可以结合new关键字。
什么是new 关键字
对于New关键字我是这么理解的:
生成一个新的Object(Class)实例,运行其构造函数(若其本身即为一个函数,则运行其本身)。
如何在ES5中判断函数调用方法(是否是new调用)
使用 instanceof来进行判断。
function Person()
{
if(this instanceof Person){
....
}
else{
.....
}
}
PS:ES6中使用 typeof new.target === classname 来替换 instanceof ,规避了classname.call的问题。在函数外使用new.target会报错。
箭头函数
- 没有this、arguments和new.target绑定,其值由最近一层非箭头函数决定。
- 不可以通过new关键字调用,因其没有构造方法。
- 没有原型,因其不可通过new方法调用。
- 不可改变this绑定,同时没有arguments对象。
- 不支持重复的命名参数。
当箭头函数只有一个参数时,可以直接写参数名。
let val = value => value;
//等同于
let val = function(value){
return value;
}
若有两个及以上的参数,则添加小括号。
let sum = (num1,num2) => num1 + num2;
创建立即执行函数表达式
定义一个匿名函数并立刻调用,同时不保存任何对该函数的引用,即为立即执行函数表达式(IIFE)。这种模式在你想创建一个与其他程序隔离的作用域时非常方便。
资料如下:
举个例子:
let person = (function(value){
return {
getValue: function(){
return value;
}
}
})("Hello!");
person.getValue();//Hello!