Javascript 使用文字符号表示对象的等价物

Javascript 使用文字符号表示对象的等价物,javascript,object,Javascript,Object,见下一节课: function availItem(xs, s, m, l, xl) { this.xs = xs; this.s = s; this.m = m; this.l = l; this.xl = xl; } 如何使用JSON声明上述类?我认为应该按照以下方式进行,但问题是通过争论 var availItem = {

见下一节课:

function availItem(xs, s, m, l, xl) {
            this.xs = xs;
            this.s = s;
            this.m = m;
            this.l = l;
            this.xl = xl;
        }
如何使用JSON声明上述类?我认为应该按照以下方式进行,但问题是通过争论

var availItem = { 
               xs : xs,
                s : s,
                m : m,
                l : l,
                xl : xl


}
我想以同样的方式使用它们

var obj =new availItem(xs,s,b,l,xl);

尝试在引号中设置属性。例如:

{
    "xs" : xs,
    "s" : s,
    "m" : m,
    "l" : l,
    "xl" : xl
}

这两段代码不一样

第一个是创建对象的构造函数。您可以使用它,例如:

var obj=新的可用性MXS、s、m、l、xl

此时,obj是一个JSON对象

第二个是一个JSON对象,您可以通过调用前一个构造函数得到它,它只是数据,它不提供任何特定的功能,只提供对某些数据的引用

您没有指定需要向availItem对象传递参数的原因。参数只能是指定给对象属性的值:

var availItem = { 
               xs : param1,
                s : param2,
                m : param3,
                l : param4,
                xl : param5
}

不幸的是,你不能。这不是一个真正的类,Javascript中没有这样的东西,它是一个函数,JSON只是一种数据格式,不能表示函数或函数调用


您能得到的最接近的是what-一个具有正确属性的对象文本。引号也很重要-如果属性名没有引号,一些JSON解析器将拒绝JSON。

JavaScript中没有类,只有对象。创建对象的第一种方法通常称为实例化或构造的对象

function availItem(xs, s, m, l, xl) {
    this.xs = xs;
    this.s = s;
    this.m = m;
    this.l = l;
    this.xl = xl;
}
以这种方式定义的对象可以用新操作符实例化

第二种方法使用对象文字符号创建对象,该符号几乎是JSON,但不完全是JSON。最值得注意的是,新运算符不处理对象文字,因为它们没有构造函数

如果您想使用对象文字符号,我建议您遵循

var availItem = availItem(xs, s, m, l, xl) {
    var my = {
        xs: xs,
        s:  s,
        m:  m,
        l:  l,
        xl: xl
    };

    // Add any methods that may be necessary
    my.method1 = function() { ... };

    // etc

    return my;
};

...

var item = availItem(...);

不清楚为什么要对同一件事同时使用这两种方法。

您可以在末尾添加分号,将其作为答案发布,然后选择正确的分号,几分钟后,应该会有各种各样的答案提到JSON和对象文本之间的差异。不确定您想要什么…如果您只是想让函数创建JSON对象,那么您可以将JSON对象插入函数,然后返回它。是的,JSON是静态对象描述符,而不是函数,所以它不能接受论点。你能更详细地描述一下这个用例吗?这些都不是JSON,如果有的话,就是它的对象文字符号,JSON格式是它的子集。调用任何JSON的前提是它包含在字符串中。但是你是怎么想到这个主意的呢?现在obj是一个JSON对象-你是说它是一个Javascript对象吗?是的,不管怎样。。。JSON对象看起来更像是一个热门术语。但是JSON作为数据传输格式不能包含函数,Javascript对象文本可以。卢卡,请参阅我对OP的评论。JSON不是一个可以应用于任何东西的热门术语。JSON是JSON,对象文字符号是对象文字符号。正如我所说,调用JSON的前提是它是一个字符串。所以,我恐怕你错了,安迪是对的:@Luca:这是我一整天听到的最有趣的事情,但现在才10:30:-正如deceze所说,JSON是一种数据传输格式。您的答案是obj是一个JSON对象,它是使用新语句从构造函数创建的。这根本不是真的,它不是JSON格式的——它是一个Javascript对象。第二个也不是JSON对象,它只是一个对象文本。我建议您在上阅读更多关于JSON的内容。如何定义xs、s、m。。。作为论据?
var availItem = availItem(xs, s, m, l, xl) {
    var my = {
        xs: xs,
        s:  s,
        m:  m,
        l:  l,
        xl: xl
    };

    // Add any methods that may be necessary
    my.method1 = function() { ... };

    // etc

    return my;
};

...

var item = availItem(...);