javascript文字初始化循环

发布于 2024-08-29 02:30:46 字数 566 浏览 6 评论 0原文

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

这个对象最近更改为对象文字表示法,但我遇到了一些在网上搜索没有揭示的问题。

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

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;
};

如何以对象文字表示法初始化构造函数中的属性?

I have an object which has several properties that are set when the object is created.

This object recently changed to object literal notation, but I've hit a bit of a problem that searching on the net doesn't reveal.

Simply stated I need to do this:

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;
};

How do I initialise a property in the constructor in object literal notation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽清梦 2024-09-05 02:30:46
  1. 您可以使用匿名函数动态创建数组:

    星 = 函数(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
        var 自我 = {
            id:_id,
            // 其他属性
            链接:(函数(){
                var a = [];
                for (var i=0;i<8;i++) {
                    var k = parseInt(_links[i]);
                    如果(k>0){
                        a.推(k);
                    }
                }
                返回一个;
            })(),
            // 其他方法
        };
        返回自我;
    };
    
  2. 您可以在定义文字后执行此操作:

    星 = 函数(_id, _x, _y, _n, _o, _im, _c, _b, _links) {
        var 自我 = {
            id:_id,
            // 其他属性
            链接:[],
            // 其他方法
        };
        for (var i=0,j=0;i<8;i++) {
            var k = parseInt(_links[i]);
            如果(k>0){
                self.links[j++] = k;
            }
        }
        返回自我;
    };
    
  1. You can create the array on the fly using an anonymous function:

    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;
    };
    
  2. You can do it after the literal is defined:

    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;
    };
    
离线来电— 2024-09-05 02:30:46

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

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;
};

For this specific example, you could use an anonymous function, like this:

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;
};
一抹苦笑 2024-09-05 02:30:46

你不能。对象表示法不允许这样做。但是,您可以在初始化对象后添加属性。

顺便说一下,self 已经是一个已定义的对象,它是 window 对象的别名。当您定义一个名为 self 的临时对象时[因此,您没有摆脱 window.self],这不是您应该做的事情。就好像 self 是一个关键字,而您当前对它的使用是非法的。

You can't. Object notation doesn't allow this. However, you can add the properties AFTER initializing your object.

By the way, self is a defined object already, which is an alias for the window object. While you ARE defining a temporary object named self [and thus, you aren't getting rid of window.self] this isn't something you shold be doing. Act as if self was a keyword and your current usage of it is illegal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文