zoukankan      html  css  js  c++  java
  • 基础知识点 关于 prototype __proto__

    基础知识点 关于 prototype  __proto__

    供js新手参考

     JavaScript 的一些基础知识点:

    1. 在 JavaScript 中,所有对象 o 都拥有一个隐藏的原型对象(在 Firefox 中是 o.__proto__)。该隐藏原型对象拥有一个 constructor 成员,指向该对象的构造函数。当读取对象成员 o.member 时,会顺着原型链往上回溯。因此我们可以得到o.constructor === o.__proto__.constructor. 这是最基本的知识点,不多说。
    2. 在 JavaScript 中,所有函数声明在解析后,都自动拥有一个 prototype 成员。该 prototype 成员拥有一个自动添加的 constructor 成员,指向函数本身。也就是Fn === Fn.prototype.constructor.
    3. 函数 Fn 本身也是对象,因此Fn.constructor === Fn.__proto__.constructor, 注意Fn.__proto__ !== Fn.prototype, 千万不要混淆了。
    4. var fn = new Fn(),在 Firefox 下,不考虑参数传递,可以用下面的代码来表示 new 的过程:
      var o = {__proto__: Fn.prototype};
      Fn.apply(o);
      fn = o;
      
    5. 上面第 4 点是第 1 点的原因,因为任何一个对象都源自函数构造器,比如 var a = {} 可以等价为:
      var o = {__proto__: Object.prototype};
      Object.apply(o);
      a = o;
      

      因此所有对象都具有 constructor 成员。

    上面 5 点可以归结为 2 点:构造函数的实例化过程和对象成员的原型链回溯机制。理解了这两点,市面上 JavaScript 的各种各样 OOP 机制,比如 Dean Edwards 的 Base.extend,MooTools 里的 new Class, 以及《悟透 JavaScript》里的甘露模型等等,就都能轻松轻松理解了。

  • 相关阅读:
    一周进度条博客
    4.8地铁查询开发进度
    4.7地铁查询开发进度
    4.6地铁查询系统开发进度
    大二下第六周学习进度报告
    4.5地铁查询系统开发进度2
    《构建之法》阅读笔记03
    石家庄地铁查询系统开发进度
    《构建之法》阅读笔记02
    大二下第五周学习笔记
  • 原文地址:https://www.cnblogs.com/litao229/p/3233327.html
Copyright © 2011-2022 走看看