首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayCollection扩展错误

ArrayCollection扩展错误
EN

Stack Overflow用户
提问于 2011-08-28 06:55:40
回答 1查看 137关注 0票数 2

我为添加推送方法扩展了ArrayCollection类

代码语言:javascript
复制
package com.cargo.collections
{
    import mx.collections.ArrayCollection;

    public class DataCollection extends ArrayCollection {

        public function DataCollection(source:Array = null) {
            super(source);
        }

        public function push(...parameters):uint {
            var i:uint = source.push(parameters);
            this.refresh();
            return i;
        }
    }
}

但是推送的数据是数组:/

代码语言:javascript
复制
var test:DataCollection = new DataCollection({id: 1});
test.source.push({id: 2});
test.push({id: 3});

输出为

代码语言:javascript
复制
test = Array( {id: 1}, {id: 2}, Array({id: 3}) )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-28 07:23:05

在您的示例中,...parameters创建了一个数组,其中包含传递给该函数的所有参数。这应该像预期的那样工作:

代码语言:javascript
复制
public function push(...parameters):uint {
    var i:uint = source.push(parameters[0]);
    this.refresh();
    return i;
}

或者,如果您的目的是启用多个参数的推送,则可以使用Function.apply()方法,该方法将给定的数组转换为多个参数:

代码语言:javascript
复制
public function push(...parameters):uint {
    var i:uint = source.push.apply(null,parameters);
    this.refresh();
    return i;
}

这相当于说

代码语言:javascript
复制
var i:uint = source.push(parameters[0],parameters[1],parameters[2]);  // etc
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7217909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档