以前,当我需要存储大量相关变量时,我会创建一个类。
function Item(id, speaker, country) {
this.id = id;
this.speaker = spkr;
this.country = country;
}
var myItems = [
new Item(1, 'john', 'au'),
new Item(2, 'mary', 'us')
];
但我想知道这是不是一个好的做法。有没有其他更好的方法在Javascript中模拟结构?
发布于 2009-02-02 06:41:56
对象文字和构造对象之间的唯一区别是从原型继承的属性。
var o = {
'a': 3, 'b': 4,
'doStuff': function() {
alert(this.a + this.b);
}
};
o.doStuff(); // displays: 7
你可以创建一个结构工厂。
function makeStruct(names) {
var names = names.split(' ');
var count = names.length;
function constructor() {
for (var i = 0; i < count; i++) {
this[names[i]] = arguments[i];
}
}
return constructor;
}
var Item = makeStruct("id speaker country");
var row = new Item(1, 'john', 'au');
alert(row.speaker); // displays: john
发布于 2009-02-02 06:28:43
我总是使用对象字面量
{id: 1, speaker:"john", country: "au"}
发布于 2012-11-07 09:37:22
真正的问题是,语言中的结构应该是值类型,而不是引用类型。建议的答案建议使用对象(引用类型)来代替结构。虽然这可以服务于它的目的,但它回避了程序员实际上想要使用值类型(如原语)代替引用类型的好处。例如,值类型不应该导致内存泄漏。
编辑:有a proposal in the works可以涵盖这一目的。
//today
var obj = {fname: "Kris", lname: "Kringle"}; //vanilla object
var gifts = ["truck", "doll", "slime"]; //vanilla array
//records and tuples - not possible today
var obj = #{fname: "Buddy", lname: "Hobbs"};
var skills = #["phone calls", "basketball", "gum recycling"];
https://stackoverflow.com/questions/502366
复制相似问题