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