见以下课程:
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);
答案 0 :(得分:4)
JavaScript中没有类,只有对象。创建对象的第一种方法通常称为实例化或构造对象。
function availItem(xs, s, m, l, xl) {
this.xs = xs;
this.s = s;
this.m = m;
this.l = l;
this.xl = xl;
}
以这种方式定义的对象可以使用new
运算符
var item = new availItem(...);
第二种方法使用对象文字表示法创建一个对象,它几乎是,但不是JSON。最值得注意的是,new
运算符不支持对象文字,因为它们没有构造函数(函数)。
如果您想使用对象文字表示法,建议您按照module pattern(criticism进行余额)
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(...);
目前还不清楚为什么要同时使用这两种方法。
答案 1 :(得分:1)
尝试在引号中设置属性。例如:
{
"xs" : xs,
"s" : s,
"m" : m,
"l" : l,
"xl" : xl
}
答案 2 :(得分:1)
这两段代码不一样。
第一个是创建对象的构造函数。您可以使用它,例如:
var obj = new availItem(xs, s, m, l, xl);
。
此时obj
是一个JSON对象。
第二个是JSON对象(你可以通过调用前一个构造函数获得),它只是数据(除了对某些数据的引用之外,它不提供任何特定的功能)。
您没有指定需要将参数传递给availItem
对象的原因。参数可以是您分配给对象attribues的值:
var availItem = {
xs : param1,
s : param2,
m : param3,
l : param4,
xl : param5
}
答案 3 :(得分:1)
不幸的是,你做不到。这不是一个真正的类(在Javascript中没有这样的东西),它是一个函数,而JSON(它只是一种数据格式)不能代表函数或函数调用。
最接近的是softcr suggests - 具有正确属性的对象文字。引号也很重要 - 如果未引用属性名称,某些JSON解析器将拒绝JSON。