JS 基础
JS 原型
原型、构造函数、实例
- prototype:原型对象,每一个
js对象都有__proto__属性指向该对象的原型,可以通过obj.__proto__进行访问(es6之前为非标准属性)。 - 构造函数:可通过
new来创建实例的函数。 - 实例:
new出来的实例对象,通过__proto__指向原型,原型通过constructor指向构造函数。
原型链
原型链由原型对象组成,每个对象都有 __proto__ 属性,指向创建该对象的构造函数的原型,原型也是个对象,也有 __proto__ 属性指向它的构造函数的原型,直至指向 null,这样通过 __proto__ 属性连起来的链则称为 原型链。
闭包
闭包是指有权访问另一个函数作用域中的变量的函数。通常用于延长作用域链,保护局部变量防止被垃圾回收。
this
函数在执行时才会确定 this 指向,一般来说谁调用就指向谁。
- 全局
this指向window ie事件对象中this指向window,并不指向当前元素setTimeout中this指向window- 构造函数中
this指向实例对象 - 箭头函数无
this,其中的this指向为外层非箭头函数指向
箭头函数的理解
- 无原型,即没有
prototype属性 - 无
this,this为外层非箭头函数的this - 无
arguments,可以通过剩余参数来模拟获取 - 无
super - 不能通过
new关键字创建
箭头函数的意义(箭头函数与普通函数的本质区别)
ES6 箭头函数的提出是为了消除函数的二义性。
早期 js 设计简单,普通函数即作为函数调用,也作为类使用,但这就容易导致混乱,虽然可以通过函数名首字母大写来约定是类,但总有不规范书写或随意混用的情况。
所以 ES6 中做了新的规范,函数使用箭头函数声明,类则用 class 声明。