原型和原型链

构造函数

特点:一般函数名是大写开头,就是构造函数。(良好的书写习惯,受人待见。)


构造函数.png

this是空对象,然后赋值。

构造函数 - 扩展

  • var a = {}其实是 var a = new Object()的语法糖
  • var a = []其实是 var a = new Array()的语法糖
  • function Foo(){...}其实是 var Foo = new Function(...)
  • 使用 instanceof 判断一个函数是否是一个变量的构造函数。
    (判断一个变量是否为“数组”:变量 instanceof Array)

原型规则和示例

5条原型规则:原型规则是学习原型链的基础

  • 所有引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(除了 “null”意外)


    图片.png
  • 所有引用类型(数组,对象,函数),都有一个proto(隐式原型)属性,属性值是一个普通的对象

    图片.png

  • 所有的函数,都有一个prototype(显示原型)属性,属性值也是一个普通对象


    图片.png
  • 所有引用类型(数组,对象,函数),porto属性值指向他的构造函数的'portotype'的属性值

    图片.png

    图片.png

  • this :通过对象属性的形式去执行函数,还是自身的属性,还是从原型中得到的属性,他执行的函数的this,永远指向(对象本身)f自身。


    图片.png
  • for ( in )循环对象自身的属性


    图片.png

原型链

图片.png

图片.png

instancof

  • f instanceof Foo的逻辑是:
  • f 的proto一层一层往上,能否对应到Foo.portotype
  • 再试着判断f instanceof Object
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容