首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript中的结构

Javascript中的结构
EN

Stack Overflow用户
提问于 2009-02-02 14:25:38
回答 7查看 217.7K关注 0票数 127

以前,当我需要存储大量相关变量时,我会创建一个类。

代码语言:javascript
复制
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中模拟结构?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-02-02 06:41:56

对象文字和构造对象之间的唯一区别是从原型继承的属性。

代码语言:javascript
复制
var o = {
  'a': 3, 'b': 4,
  'doStuff': function() {
    alert(this.a + this.b);
  }
};
o.doStuff(); // displays: 7

你可以创建一个结构工厂。

代码语言:javascript
复制
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
票数 197
EN

Stack Overflow用户

发布于 2009-02-02 06:28:43

我总是使用对象字面量

代码语言:javascript
复制
{id: 1, speaker:"john", country: "au"}
票数 35
EN

Stack Overflow用户

发布于 2012-11-07 09:37:22

真正的问题是,语言中的结构应该是值类型,而不是引用类型。建议的答案建议使用对象(引用类型)来代替结构。虽然这可以服务于它的目的,但它回避了程序员实际上想要使用值类型(如原语)代替引用类型的好处。例如,值类型不应该导致内存泄漏。

编辑:有a proposal in the works可以涵盖这一目的。

代码语言:javascript
复制
//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"];
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/502366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档