zoukankan      html  css  js  c++  java
  • 函数和原型

    在看这篇文章 《理解Javascript原型》 时,有几段话把我看得一头雾水,举的列子我也没太看明白

    每个函数都有一个原型属性。反过来,如果不是函数,将不会有这样一个属性。

    函数A的原型属性(prototype property )是一个对象,当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例

    于是自己在Chrome控制台测试了一下,总算能理解了,我们把这几段话一句句来剖析:

    每个函数都有一个原型属性。

    函数A的原型属性(prototype property )是一个对象


    可看出,a是一个函数,拥有原型属性protoype,且该属性是一个对象

    反过来,如果不是函数,将不会有这样一个属性。


    b是由a实例化的一个对象,不是函数,故b没有原型属性

    当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例

    继续看这一句话,上面b是由a实例化的,所以a会将其原型属性(prototype)赋给b的原型


    可看到b的原型和a的原型属性一致


    也许看到这里你已经被 原型原型属性 弄晕了,我们阐释一下二者的区别:

    原型属性  是指对象的属性 prototype

    原型  是指对象的属性 __proto__,对应的是该对象构造函数内的原型属性

    所以获得一个对象的原型可以通过obj.__proto__,也可以用obj.constructor.prototype获得



  • 相关阅读:
    HashMap底层实现原理(JDK1.8)源码分析
    JVM总结
    初识Nosql
    线程池总结
    Linux中常用操作命令
    JAVA—集合框架
    TeKtronix TDS210数字示波器使用简介
    硬盘的物理结构
    Unicode 与 UTF
    I2C串行总线
  • 原文地址:https://www.cnblogs.com/hisheng/p/6134961.html
Copyright © 2011-2022 走看看