• JavaScript中的的constructor


    >

    许多JavaScript程序库中都大量用到了constructor这个函数,但是由于之前始终对此函数理解不清,进而对程序库的实现机制的理解上产生了不小的障碍。后来发现其实想要很好地理解这个constructor函数,你只需要知道它始终指向创建当前对象实例的(构造)函数就可以了。如何理解这句话呢?我们都知道,任何函数都是Function类的一个实例,那么根据上述可知:任何函数的constructor属性都指向Function类。那么Function类的constructor又指向谁呢?还是Funtion类本身,其实JavaScript内部的Function类就是一个函数对象,只不过任何函数都起始与Function类而已。这样我们就可以通过constructor属性一层一层地构成一个链,这个链可以追踪到一个对象的最原始的构造函数了,这对于在JavaScript中实现类的继承有很大的帮助。

    下面的例子演示了如何利用constructor来追踪对象最原始的构造函数:

    var base = new Function();

    // Or you can write: var base = function(){}

    var obj = new base();

    // test its parent contructor

    alert(base.constructor == Function); // output true

    alert(obj.constructor == base); // output true

    // link into the root constructor

    alert(obj.constructor.constructor == Function); // also output true

    首先,创建一个新的函数实例base,易知该实例的constructor很显然指向Function类,故当测试base.constructor==Function时为真;之后有在base函数实例的基础上创建一个对象obj,由于obj是base的一个实例故obj.constructor==base亦为真;最后一句代码也返回真,这正是利用constructor形成一个链,通过它追根溯源找到了最原始了Function类。首先obj.constructor返回的是base(上面已解释不再赘述),而base又是Function类的一个实例,故obj.contructor.constructor返回的是Function类的引用。

  • 相关阅读:
    debian8 vga 文本模式下出现闪屏
    Delphi中根据分类数据生成树形结构的最优方法
    SQL获取每月、每季度、每年的最后一天记录
    Delphi实现树型结构
    Delphi中initialization和finalization
    Delphi 连接 Paradox
    delphi2007单个文件(pas)的控件安装
    Delphi安装*.pas扩展名的控件
    数据库组件介绍(Delphi)
    Delphi控件开发浅入深出(三)
  • 原文地址:https://www.cnblogs.com/objectorl/p/1632724.html
Copyright © 2020-2023  润新知