JS-MORE(原型链牵涉到的一些问题)
1、原型链
- 每一个函数都有一个prototype属性
- prototype是一个对象数据类型,天生具有constructor属性,指向它的构造函数
- 每一个对象都有__proto__属性,指向它的原型

2、new函数与普通函数的区别
- new函数执行会首先形成一个堆内存(区别)
- 初始化作用域链
- 初始化this(将this指向我们第一步创建的堆内存)(区别)
- 初始化arguments
- 形参赋值
- 变量提升
- 代码自上而下执行
- return this(区别)
3、关于this指向的问题
- 有点:就看点前面的对象是谁
- 无点:在非严格模式下就是window,在严格模式下就是undefined
- 自执行函数:在非严格模式下是window,在非严格模式下就是undefined
- 回调函数:在非特殊处理的情况下就是window
- 绑定事件:绑定事件的对象是谁this就是谁
- 构造函数:构造函数的this就是当前的实例
- apply、bind、call可以改变this的指向
4、call、apply、bind的区别
- call是立即执行,传入的参数是一个或者多个参数
- apply是立即执行,传入的参数是一个或者多个参数的数组
- bind是返回一个新的函数,当需要的时候进行调用
5、一些细节性问题
- Object原型的__proto__是null