zoukankan      html  css  js  c++  java
  • 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类的引用。

  • 相关阅读:
    初听余杭...
    生命里走了一位花儿,同时却遇到了10年未见的老同学
    两个馒头过中秋
    周末粉红色的回忆
    jQuery图片剪裁插件 Jcrop
    上周六出去烤肉随便拍了几张
    一周学会Mootools 1.4中文教程:(7)汇总收尾
    30天学会 MooTools 教学(4): 函数和MooTools
    用Mootools寫的一个类似facebook的弹出对话框
    用Mootools获得操作索引的两种方法
  • 原文地址:https://www.cnblogs.com/objectorl/p/1632724.html
Copyright © 2011-2022 走看看