JS逆向需要的基础共有十二条,分别是:

1、      每个函数都有 prototype 和 __proto__

2、      每一个对象/构造函数实例(这个也是对象)都有 __proto__

3、      实例的 __proto__ 指向构造函数的 prototype。这个称为 构造函数的原型对象

4、      js 引擎会沿着 __proto__ -> ptototype 的顺序一直往上方查找,找到                   window.Object.prototype 为止,Object 为原生底层对象,到这里就停止了查找,    如果没有找到,就会报错或者返回 undefined

5、      而构造函数的 __proto__  指向 Function.prototype  ƒ () { [native code] } 【构造器函数,但这个叫法    并不准确,它目前没有一个合适的中文名】

6、    __proto__是浏览器厂商实现的,W3C规范中并没有这个东西

7、    JS 代码还没运行的时候,JS 环境里已经有一个 window 对象了。函数是对象

8、    window 对象有一个 Object 属性,window.Object 是一个函数对象

9、    window.Object 这个函数对象有一个重要属性是 prototype

10、  window.Object.prototype 里面有一堆属性

11、   所有的实例函数__proto__都会 指向构造函数的 prototype

12、   constructor 是反向的 prototype