2019年9月24日
JavaScript-结构型数据(转)
结构型数据
有很多种,比如表单,但是一定要尽量使用JSON,就是好用,谁用谁知道。谁让你不用JSON,你们确实需要好好谈谈了。
JSON
非常简单的理解方式,当做Object处理即可,数据结构与Object一模一样(转换时候Function值会丢失,下面会介绍如何处理),即key-value形式, 但是有个特殊,就是数组也当做合法的JSON结构。
// JSON
{
key1: value1,
key2: value2,
...
keyn: valuen
}
// 数组也行
[value1, value2, value3]
以上value当然可以是任何类型,除了Function,因为最终都是转成了String类型进行传输的。
那么如果你遇到了需要传输Function的业务,如下处理:
var json = {
a: 1,
b: function() {
return 'function'
}
}
// 会出现的问题
// JSON.stringify(json) // "{"a":1}",函数那个丢失了,注意已经转成字符串了
// 处理方式
json.b += '' // 记得之前数据类型时候字符串加减法么,加空字符串相当于强制转为字符串
JSON.stringify(json) // "{"a":1,"b":"function() {\n return 'function'\n }"}",成功转换
JSON两个关键方法
方法 | 说明 |
---|---|
stringify | 对象(或数组)转字符串 |
parse | 字符串转对象(或数组) |
JSON.stringify([1]) // "[1]"
JSON.parse("[2]") // [2]
特殊结构
Function
严格来说,Function不是数据结构,但是它可以实现数据结构功能,或者存储数据。这里超纲,牵扯到了“类”,简单了解即可。
function MyObj() {
this.head = 'head'
this.foot = 'foot'
this.obj = {a: 1}
this.arr = [1,2]
this.func = function() {
return 'func'
}
}
var obj = new myObj()
obj.func += ''
obj // "{"head":"head","foot":"foot","obj":{"a":1},"arr":[1,2],"func":"function() {\n return 'func'\n }"}"
typeof obj // "object"
作者:前端绅士
链接:https://www.imooc.com/article/49594