JSON表示法和分配给对象有什么区别?

时间:2011-07-13 21:20:42

标签: javascript json knockout.js

在Knockoutjs的Twitter Client示例中,一些属性位于JSON对象中,而其他属性则分配在JSON变量之外。有什么不同?为什么方法(findSavedList)不能成为初始声明的一部分?

var viewModel = {
    savedLists: ko.observableArray([ ... ]),
    editingList: { ...  },
    userNameToAdd : ko.observable(""),
    currentTweets : ko.observableArray([])
};

viewModel.findSavedList = function (name) {
   ...
};

3 个答案:

答案 0 :(得分:1)

仅从问题中的代码中,我认为没有任何理由不能这样编写:

var viewModel = {
    savedLists: ko.observableArray([ ... ]),
    editingList: { ...  },
    userNameToAdd : ko.observable(""),
    currentTweets : ko.observableArray([]),
    findSavedList: function (name) {
       ...
    }
};

查看actual example,我认为他们只是想单独编写函数 - 可能是为了便于阅读?

答案 1 :(得分:1)

没有理由不采用方法;这是风格。

答案 2 :(得分:1)

你引用的东西都不是JSON。 JSON是数据交换的文本符号。你引用的是JavaScript代码。

要回答你的问题,没有理由不能在对象文字中定义该函数:

var viewModel = {
    savedLists: ko.observableArray([ ... ]),
    editingList: { ...  },
    userNameToAdd : ko.observable(""),
    currentTweets : ko.observableArray([]),
    findSavedList: function(name) {
       ...
   }
};

为清楚起见,作者可能已将其分解。


关于我上面的JSON评论:JSON是JavaScript文字符号的子集。以上是直接的JavaScript文字表示法。你永远不需要JavaScript代码中的JSON;当你以文本形式传递数据时,你只需要JSON。如果 意味着是JSON,那么它将是无效的。在JSON中,属性名称(键)必须是双引号,并且您不能在属性初始值设定项的右侧有表达式(因此,不能调用ko.observeableArray)。有关JSON site的更多信息。