• JavaScript基础(13)_原型、原型对象


    上一章构造函数确实简化了多个对象创建的麻烦问题,但是:构造函数每创建一个实例,构造函数就会执行一次,将属性和方法添加到该对象,每个对象实例化后地址互不相同,即使它们的方法所实现的逻辑和功能一样,但确不是同一个方法,这样每次调用,系统都会开辟空间来创建一个(实现同一个逻辑和功能的)方法,从而影响性能,这样的代码显得多余。那么可不可以放全局域中吗?可以,但是会占用全局域命名空间(别的函数不能再同名),而且定义在全局作用域中会很不安全(其他程序员万一同名了,代码就乱了)。因此,我们有必要优化代码。可不可以让相同的属性或方法放在公共区域,被多个实例化的不同对象调用呢

    原型、原型对象
    原型(prototype):是函数的一个特殊属性,即指针指向原型对象。 
    原型对象(prototype object):是一个属于其所在函数的空对象,可以添加属性和方法。其自身constructor属性指向其函数。

    解释:
    原型对象相当于一个公共的区域,同一个类(构造函数)的实例化的对象都可以访问到这个原型对象。为了优化性能,我们可以将该类中共有的属性和方法统一放入到原型对象中。

    对应关系:
    1、每一个对象都有一个属性叫__proto__,它指向了一个对象,这个对象我们叫原型对象。
    2、每一个构造器(类,函数),也是对象,也有一个属性叫prototype,它也指向一个对象,和__proto__指向同一个对象,也是原型对象。
    3、每一个原型对象上,都是有一个属性叫constructor,它指向此原型对象所对应的构造器。

    访问机制(原型链):
    当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有则就沿着__proto__会去原型对象中寻找,如果找到则直接使用,如果没用则去原型的原型中寻找,直到找到Object对象的原型,Object对象的原型没有原型,如果在Object中还没有找到则返回undefined。

    原型对象的用法:
    1、利用对象的动态特性完成添加
    语法:构造函数名.prototype.xxxx=yyyy
    2、直接替换
    语法:构造函数名.prototype={};

    示例:

    解析图所示:

    运行结果:

      

  • 相关阅读:
    JVM性能调优
    最优孤岛划分下含分布式电源配电网可靠性评估(Matlab代码实现)
    烟花爆竹厂如何做到0风险0爆炸事故?AI+视频监控平台给出答案
    一篇五分生信临床模型预测文章代码复现——Figure 2. 生存分析,箱线图表达改变分析(一)
    攻防世界-web-FlatScience
    ubuntu 22.04通过apt-get安装的apache2将http改造为https的方法
    mysql主从库Slave_SQL_Running: No问题经验分享
    人工智能AI界的龙头企业,炸裂的“英伟达”时代能走多远
    IIS 日志分析工具LogParser
    关于去除图片上的水印
  • 原文地址:https://blog.csdn.net/no15870678621/article/details/127953142