JS-MORE(原型链牵涉到的一些问题)

100 阅读1分钟

1、原型链

  1. 每一个函数都有一个prototype属性
  2. prototype是一个对象数据类型,天生具有constructor属性,指向它的构造函数
  3. 每一个对象都有__proto__属性,指向它的原型

QQ截图20210825205636.jpg

2、new函数与普通函数的区别

  1. new函数执行会首先形成一个堆内存(区别)
  2. 初始化作用域链
  3. 初始化this(将this指向我们第一步创建的堆内存)(区别)
  4. 初始化arguments
  5. 形参赋值
  6. 变量提升
  7. 代码自上而下执行
  8. return this(区别)

3、关于this指向的问题

  1. 有点:就看点前面的对象是谁
  2. 无点:在非严格模式下就是window,在严格模式下就是undefined
  3. 自执行函数:在非严格模式下是window,在非严格模式下就是undefined
  4. 回调函数:在非特殊处理的情况下就是window
  5. 绑定事件:绑定事件的对象是谁this就是谁
  6. 构造函数:构造函数的this就是当前的实例
  7. apply、bind、call可以改变this的指向

4、call、apply、bind的区别

  1. call是立即执行,传入的参数是一个或者多个参数
  2. apply是立即执行,传入的参数是一个或者多个参数的数组
  3. bind是返回一个新的函数,当需要的时候进行调用

5、一些细节性问题

  1. Object原型的__proto__是null