一、JS 的一些名词概念

什么是作用域?

变量存在的范围。

可分为全局作用域和函数作用域,ES6 新增块级作用域。

什么是闭包?

闭包就是能够读取其他函数内部变量的函数。

  • 闭包的形式:函数内部定义函数
  • 本质上闭包就是将函数内部和外部连接起来的一座桥梁

闭包的作用:

  • 可以读取函数内部变量
  • 让这些变量始终保持在内存中,即闭包可以使得它诞生的环境一直存在。
  • 封装对象的私有属性和私有方法

什么是构造函数?

用于构造(生成)实例的一个函数,使实例拥有构造函数内定于的属性和方法。

什么是实例对象?

实例对象就是通过 new 构造函数生成的,拥有构造函数内定于的属性和方法的一个对象。

什么是 this?

就是属性或方法当前所在的对象,指向当前运行环境(对象)

什么是原型?

每个函数都有一个 prototype 属性,指向一个对象,该对象称为原型对象。

什么是原型链?

所有对象都有自己的原型对象,由于原型对象也是对象,因此它也有自己的原型,这就会形成一个原型链。

最顶层的原型是 Object.prototype。

读取对象属性时,JS 会先在对象自身上找,找到就直接返回,如果找不到,会到原型上找,如果还是找不到,就会去原型的原型上找,最终会到最顶层的 Object.prototype 上找,还是找不到就会返回 undefined。

什么是 constructor?

prototype 原型对象都有一个 constructor 属性,默认指向 prototype 对象所在的构造函数。

什么是包装对象?

包装对象指的是将原始类型(数字、字符串、布尔值)进行实例化。