JSON表示法和对象赋值的区别是什么?

What is the difference between JSON notation and assigning to an object?

本文关键字:区别 是什么 赋值 对象 表示 JSON      更新时间:2023-09-26

在Knockoutjs的Twitter客户端示例中,一些属性在JSON对象中,其他属性在JSON变量之外分配。有什么区别呢?为什么方法(findSavedList)不能只是初始声明的一部分?

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

仅从问题中的代码来看,我看不出有什么理由不可以这样写:

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

看看实际的例子,我认为他们只是想单独编写函数—也许是为了可读性?

方法没有理由不能;这是文体。

您所引用的内容都不是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)。