Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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_Literals - Fatal编程技术网

javascript文字初始化循环

javascript文字初始化循环,javascript,literals,Javascript,Literals,我有一个对象,它有几个属性是在创建对象时设置的 这个对象最近改为对象文字符号,但我遇到了一个在网上搜索并没有发现的问题 简单地说,我需要这样做: 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++)

我有一个对象,它有几个属性是在创建对象时设置的

这个对象最近改为对象文字符号,但我遇到了一个在网上搜索并没有发现的问题

简单地说,我需要这样做:

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,
//其他属性
链接:[],

对于(var i=0,j=0;i您不能。对象表示法不允许这样做。但是,您可以在初始化对象后添加属性

顺便说一句,
self
已经是一个已定义的对象,它是窗口对象的别名。当您定义一个名为self的临时对象时[因此,您没有摆脱window.self],这不是您应该做的事情。请将
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,
    //其他属性
    链接:(函数(){
    var a=[];
    对于(变量i=0;i 0){
    a、 推(k);
    }
    }
    返回a;
    })(),
    //其他方法
    };
    回归自我;
    };
    
  • 您可以在定义文字后执行此操作:

    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;
    };
    
    Star=function(_id,_x,_y,_n,_o,_im,_c,_b,_links){
    var self={
    id:_id,
    //其他属性
    链接:[],
    //其他方法
    };
    对于(VarI=0,j=0;I0){
    self.links[j++]=k;
    }
    }
    回归自我;
    };
    

  • 对于此特定示例,您可以使用匿名函数,如下所示:

    Star = function(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
        var self = {
            id: _id,
            // other properties
            links: (function(){
                var links = [];
                for (var i=0;i<8;i++) {
                    var k = parseInt(_links[i]);
                    if (k > 0) {
                        links.push(k);
                    }
                }
                return links;
            })(),
            // other methods
        };
        return self;
    };
    
    Star=function(_id,_x,_y,_n,_o,_im,_c,_b,_links){
    var self={
    id:_id,
    //其他属性
    链接:(函数(){
    var-links=[];
    对于(变量i=0;i 0){
    链接。推送(k);
    }
    }
    返回链接;
    })(),
    //其他方法
    };
    回归自我;
    };