我有一个对象,该对象具有在创建对象时设置的多个属性。

该对象最近更改为对象文字表示法,但是我遇到了一个问题,即在网上进行搜索无法显示。

简而言之,我需要这样做:

Star = function(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
    var self = {
        id: _id,
        // other properties
        links: [],
        for (var i=0,j=0;i<8;i++) { //<- doesn't like this line
            var k = parseInt(_links[i]);
            if (k > 0) {
                this.links[j++] = k;
            }
        },
        // other methods
    };
    return self;
};


如何使用对象文字符号初始化构造函数中的属性?

最佳答案

您可以使用匿名函数动态创建数组:

Star = function(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
    var self = {
        id: _id,
        // other properties
        links: (function() {
            var a = [];
            for (var i=0;i<8;i++) {
                var k = parseInt(_links[i]);
                if (k > 0) {
                    a.push(k);
                }
            }
            return a;
        })(),
        // other methods
    };
    return self;
};

您可以在定义文字后执行此操作:

Star = function(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
    var self = {
        id: _id,
        // other properties
        links: [],
        // other methods
    };
    for (var i=0,j=0;i<8;i++) {
        var k = parseInt(_links[i]);
        if (k > 0) {
            self.links[j++] = k;
        }
    }
    return self;
};

关于javascript - javascript文字初始化循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2650744/

10-12 00:13
查看更多