代码之家  ›  专栏  ›  技术社区  ›  Joel A. Villarreal Bertoldi

javascript构造函数

  •  0
  • Joel A. Villarreal Bertoldi  · 技术社区  · 14 年前

    我不完全理解如何在这个对象创建方法上应用构造函数:

    
    var MyObject = {
       ...
    };
    

    我知道你可以做到:

    
    var MyObject = new Object();
    MyObject.prototype.constructor = function(props)
    {
      ...
    }
    

    或者…

    
    function MyObject(prop1, prop2)
    {
     this.prop1 = prop1;
     ...
    }
    

    我能这样做吗?

    
    var MyObject = {
       MyObject: function(prop1, prop2)
       {
         ...
       }
    }
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Nicole    14 年前

    不,你不能,那只会在myObject上创建一个(静态)方法-- MyObject.MyObject .在javascript中,一个构造函数 全班同学。类方法和属性可以在构造函数内部使用 this. 或者通过添加到原型(构造函数外部)来使用 MyClass.prototype. . 您可以将JavaScript中的“对象”视为静态类。

        2
  •  1
  •   Gabe    14 年前

    例子来自 here

    创建构造函数

    要编写自己的构造函数,可以在构造函数中使用this关键字来引用新创建的对象。构造函数初始化对象。

    在下面的示例中:

    make7table构造函数为数字7创建一个乘法表 引入了大小属性来跟踪元素的数量 初始化每个元素的值

    function make7Table(numElements)
    {
        this.size = numElements;
        var cnt;
        for(cnt = 0; cnt < numElements; cnt++)
        {
            this[cnt] = cnt*7;
        }
    }
    
    // Use the constructor to create and initialize an array.
    myArray = new make7Table(10);
    document.write(myArray[5]);
    document.write("This table has " + myArray.size + " elements");
    

    要运行代码,请将其粘贴到JavaScript编辑器中,然后单击“执行”按钮。MyArray[5]检索值为5*7=35的元素。

        3
  •  1
  •   Gabriel McAdams    14 年前
    var MyObject = new Object();
    MyObject.prototype.constructor = function(props)
    {
        ...
    }
    

    是一样的

    var MyObject = {};
    MyObject.prototype.constructor = function(props)
    {
        ...
    }