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获得



  • 相关阅读:
    C# 小规模查找集合性能测试
    高级前端开发不可或缺的知识
    移动前端开发-单页应用(spa)模型
    移动开发之用视频做背景
    纯CSS打造忙碌光标
    移动前端开发之数据库操作篇
    如何从源码中学习javascript
    Deffered.js的实现原理
    Codeforces Round #381 (Div. 2)
    2017 ZSTU寒假排位赛 #6
  • 原文地址:https://www.cnblogs.com/hisheng/p/6134961.html
Copyright © 2011-2022 走看看