原型与原型链

全局对象window

  • 在标准里面全局对象叫glabol(浏览器windos)
  • 属性举例global.parseInt


    原型与原型链_第1张图片
    1
  • 每次页面生成时,会声明一个glabol


    原型与原型链_第2张图片
    2
  • window的属性


    原型与原型链_第3张图片
    3
  • window.可以不加

全局函数

  • 每个浏览器实现不同的函数


    原型与原型链_第4张图片
    4

    原型与原型链_第5张图片
    5

    原型与原型链_第6张图片
    6

    原型与原型链_第7张图片
    7

    原型与原型链_第8张图片
    8

    原型与原型链_第9张图片
    9
  • 临时转换,tamp用了就没了


    原型与原型链_第10张图片
    10
  • n.xxx的临时变量产生被赋值2,用完后抹杀了。

各种API

原型与原型链_第11张图片
11

原型与原型链_第12张图片
12

13

原型与原型链_第13张图片
14
  • 包前不包后


    原型与原型链_第14张图片
    15

    原型与原型链_第15张图片
    16

    原型与原型链_第16张图片
    17

    原型与原型链_第17张图片
    18

    原型与原型链_第18张图片
    19
  • 所有声明对象不相等

用的属性藏在哪里

问题:公用属性

原型与原型链_第19张图片
20

原型与原型链_第20张图片
21

原型与原型链_第21张图片
22

toString是哪来的----原型链

原型与原型链_第22张图片
23

原型与原型链_第23张图片
24
  • 原型=共有属性


    原型与原型链_第24张图片
    25z

    原型与原型链_第25张图片
    26

    原型与原型链_第26张图片
    27
  • 当声明对象时,js引擎除了在栈里弄出哈希外,还__p指向共有属性


    原型与原型链_第27张图片
    28
  • String.prototype是String的公用属性
    的引用(防止跑的)
  • s.proto是String的公用属性的引用(用的)

形式上区别

原型与原型链_第28张图片
1

原型与原型链_第29张图片
2

1.对象属性
2.函数属性


原型与原型链_第30张图片
3

原型与原型链_第31张图片
4
  • 画图的时候认为 Object.proto === Object.prototype ,
    实际上应该是 Object.proto === Function.prototype,因为 Function 是 Object 的构造函数。
  • 画图时认为 Object.prototype.proto 指向自己,
    实际上应该是指向 null
    注意大小写,number 和 Number 是不同的

重要公式

  • var 对象 = new 函数()
    对象.proto === 对象的构造函数.prototype

// 推论

  • var number = new Number()
    number.proto = Number.prototype
  • var object = new Object()
    object.proto = Object.prototype
  • var function = new Function()
    function.proto = Function.prototype

// 另外,所有函数都是由 Function 构造出来的,所以

  • Number.proto = Function.prototype // 因为 Number 是函数,是 Function 的实例
  • Object.proto = Function.prototype // 因为 Object 是函数,是 Function 的实例
  • Function.proto == Function.prototye // 因为 Function 是函数,是 Function 的实例!

你可能感兴趣的:(原型与原型链)