Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向数组中添加元素不会增加其长度_Javascript_Arrays - Fatal编程技术网

Javascript 向数组中添加元素不会增加其长度

Javascript 向数组中添加元素不会增加其长度,javascript,arrays,Javascript,Arrays,我编写了一个函数,将其arrvar变量设置为接收到的参数。 然后,我向该函数添加了一些方法: setArray:将参数添加到arrvar showArray:输出数组arrvar showArrayType:输出数组的类型arrvar(始终为对象) showLength:输出数组的长度arrvar 这里的问题是当我调用setArray()时,arrvar的长度没有增加,如下所示。为什么会这样 function ArrayClass() {

我编写了一个函数,将其
arrvar
变量设置为接收到的参数。 然后,我向该函数添加了一些方法:

  • setArray
    :将参数添加到
    arrvar
  • showArray
    :输出数组
    arrvar
  • showArrayType
    :输出数组的类型
    arrvar
    (始终为对象)
  • showLength
    :输出数组的长度
    arrvar
这里的问题是当我调用
setArray()
时,
arrvar
的长度没有增加,如下所示。为什么会这样

    function ArrayClass()
    {            
        if (arguments.length != 0) {
            this.arrvar = arguments;
        }        
    }

    ArrayClass.prototype.setArray = function () {
        for (var i = this.arrvar.length, j = 0; j < arguments.length; i++, j++)
        {
            this.arrvar[i] = arguments[j];                
        }            
    }

    ArrayClass.prototype.showArray = function ()
    {
        for (var i in this.arrvar) {
            document.writeln(this.arrvar[i]+'  ');
        }
        document.writeln("<br />");
    }

    ArrayClass.prototype.showArrayType = function ()
    {
        document.writeln(typeof this.arrvar + '<br />');
    }

    ArrayClass.prototype.showLength = function()
    {
        if (this.arrvar) {
            document.writeln('Length: ' + this.arrvar.length + "<br />");
        }
    }

    var arrObj = new ArrayClass(11, 22, 33, 44);
    arrObj.showArray();  //11  22  33  44
    arrObj.showArrayType();  //object
    arrObj.showLength();  //4
    arrObj.setArray(55, 66, 77); 
    arrObj.showArray();   //11  22  33  44  55  66  77
    arrObj.showArrayType();  //object
    arrObj.showLength();  //**4**
函数ArrayClass()
{            
if(arguments.length!=0){
this.arrvar=参数;
}        
}
ArrayClass.prototype.setArray=函数(){
for(var i=this.arrvar.length,j=0;j”);
}
ArrayClass.prototype.showArrayType=函数()
{
document.writeln(typeof this.arrvar+'
'); } ArrayClass.prototype.showLength=函数() { if(this.arrvar){ document.writeln('Length:'+this.arrvar.Length+“
”); } } var arrObj=新的ArrayClass(11,22,33,44); arrObj.showArray()//11 22 33 44 arrObj.showArrayType()//对象 arrObj.showLength()//4. arrObj.setArray(55,66,77); arrObj.showArray()//11 22 33 44 55 66 77 arrObj.showArrayType()//对象 arrObj.showLength()//**4**
您的问题是
参数
不是数组,而是某种类似数组的集合。您可以将其转换为一个数组,如so
this.arrvar=array.prototype.slice.call(参数,0)
我看不出这个
ArrayClass
函数有任何用处。为什么不直接使用本机javascript
Array
对象呢?无论如何,您的代码可能要短得多,例如(替换
文档。使用
控制台写入
。在此处记录
):

函数ArrayClass(){
this.arrvar=[].slice.call(参数)| |[];
}
ArrayClass.prototype.setArray=函数(){
this.arrvar=this.arrvar.concat([].slice.call(参数));
}
ArrayClass.prototype.showArray=函数(){

对于(var i=0;iyeah)这不是最终的代码,我知道从上面的摘录中这个函数没有具体的意义,因为我已经将代码简化为需要的代码来解释问题:p
function ArrayClass(){            
   this.arrvar = [].slice.call(arguments) || [];
}

ArrayClass.prototype.setArray = function () {
   this.arrvar = this.arrvar.concat([].slice.call(arguments));
}

ArrayClass.prototype.showArray = function() {
   for (var i=0;i<this.arrvar.length;i+=1) {
    console.log(this.arrvar[i]);
   }
}

ArrayClass.prototype.showArrayType = function()  {
    console.log(typeof this.arrvar + '<br />');
}

ArrayClass.prototype.showLength = function() {
    console.log('Length: ' + this.arrvar.length);
}