【问题标题】:Backbone.js: difference between class inizialization - JSON FormatBackbone.js:类初始化之间的区别 - JSON 格式
【发布时间】:2013-07-12 00:17:27
【问题描述】:

我正在学习 Backbone.js,因为我觉得它对我的项目会派上用场。

我正在浏览不同的教程,但我无法找到以下类的区别和最佳声明:

Person = Backbone.Model.extend({
    defaults: {
        name: 'Andy',
        age: 25,
        occupation: 'Whatever...'
    }
});

这样初始化一个类更好吗:

var me = new Person({name: 'Andy'});

var me = new Person({'name': 'Andy'});

为什么要使用单引号来设置变量?这需要更多时间,但什么是最好的?什么是对的,为什么? 我不确定是否只是 JSON 问题或者是否是主干问题,因为实际上这是初始化和使用大括号的问题。 如果我使用 .set(var, value) 并且变量没有引号,则主干会在查找变量时抛出错误。

我尝试查看 Backbone.js 网站和 JSON 网站,但找不到答案。

【问题讨论】:

  • 注意:这 不是 JSON(这是一种数据格式) - 这是一个 JavaScript 对象字面量。这里的区别很重要,因为规则不同 - 在 JSON 中,双引号键是必需的,但正如 @McGarnagle 指出的那样,JS 对象文字既不需要双引号也不需要单引号。

标签: json variables backbone.js syntax


【解决方案1】:

如果我们是迂腐的,那么有效的 JSON 需要所有键的单引号。例如,JSLint 将拒绝不带引号的 JSON。

但在 Javascript 中它们不是必需的,并且大多数人都将它们排除在外(正如您所指出的,它更简洁)。也就是说,除非您在名称中包含保留字符,例如 - 等。例如,{ name: 'Andy' } 很好,但 { first-name: 'Andy' } 会导致解析器停止。

【讨论】:

  • 见我上面关于 JSON 的注释。此外,值得注意的是,未加引号的保留字也是坏消息:{ if: "spam" } 是一个语法错误。
  • @nrabinowitz 知道了。即使它完全有意义,我也尝试了 if 并且它没有给我任何错误。有可能吗?
  • 如果你用引号括起来它不会给你一个错误。不加引号,大部分 JS 解析器都会抛出语法错误
猜你喜欢
  • 2010-12-11
  • 1970-01-01
  • 2011-09-12
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 2023-01-11
  • 1970-01-01
相关资源
最近更新 更多