Blogger Information
Blog 64
fans 6
comment 2
visits 82786
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JavaScrip中的基本数据类型,对象序列化为JSON字符串
王娇
Original
775 people have browsed it

学习总结

1.js中的数据类型和php中的数据类型非常相似,不同之处js中的数组类似php中的关联数组,js对象中的属性类似php中的关联数组,访问对象属性用.操作符
2.js中的对象可以通过JSON.sringify(对象名)方法把一对象序列化一个json字符串,然后在网络中传输
3.将一个json字符串解析为一个js对象JSON.parse(json字符串,回调函数可选)

1,index.html中的Script脚本

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>JavaScrip基础知识</title>
  7. </head>
  8. <body>
  9. <script>
  10. //-----------------------------------------
  11. //1.1JavaScript中的简单数据类型
  12. //----------------------------------------------
  13. var name = "angle";
  14. var age = 32;
  15. var isStudent = false;
  16. var hobby = null;
  17. var school = undefined;
  18. //js中有3种简单数据类型,string,number,boolean
  19. console.log(
  20. typeof name,
  21. name,
  22. typeof age,
  23. age,
  24. typeof isStudent,
  25. isStudent,
  26. typeof hobby, //输出类型为object,值为null
  27. hobby,
  28. typeof school, //输出类型为undefined,值为undefined
  29. school
  30. );
  31. //----------------------------------------------
  32. //1.2JavaScript中的数组
  33. //------------------------------------------------
  34. //js中数组定义
  35. var student = ["angle", 32, false];
  36. //数组长度通过student.length获得
  37. //通过for循环遍历数组
  38. for (var i = 0; i < student.length; i++) {
  39. console.log(student[i]);
  40. }
  41. //Array.isArray(变量名)判断一个变量是否是数组
  42. if (Array.isArray(student)) {
  43. console.log("student是一个数组");
  44. } else {
  45. console.log("student不是一个数组");
  46. }
  47. //如果script脚本放在head中
  48. //window.document.body.innerHTML += "<li>" + value + "</li>";会报类型错误
  49. //如果script脚本放在body中,则可以正常输出
  50. student.forEach(function (value, number, arr) {
  51. console.log(value);
  52. window.document.body.innerHTML += "<li>" + value + "</li>";
  53. });
  54. //使用slice函数获取数组中的元素,返回结果还是一个数组
  55. console.log("姓名:", student.slice(0, 1));
  56. //使用splice函数实现数组元素的 增 删 改 查
  57. console.log(student);
  58. student.splice(2, 0, "male", "listen music"); //splice(从什么位置开始,要删除几个元素,要插入的元素,要插入的元素,...)
  59. console.log(student);
  60. var orihobby = student.splice(3, 1, ["reading book", "programming"]); //插入的数据还可以是一个数组
  61. console.log(student);
  62. console.log(orihobby); //splice返回的是删除的数组元素,类型也是一个数组
  63. //---------------------------------------
  64. //1.3 JavaScript中的对象
  65. //------------------------------------------
  66. //定义对象用{}
  67. var stu = {
  68. name: "angle", //对象中可以包含简单数据类型
  69. age: 32,
  70. sex: "male",
  71. isStudent: false,
  72. //对象中可以包含数组
  73. hobby: ["reading book", "listen music", "programming"],
  74. //对象也可以包含另一个对象
  75. schoolInfo: {
  76. grade: "05-01",
  77. department: "计算机科学与技术",
  78. school: "清华大学",
  79. },
  80. };
  81. console.table(stu);
  82. console.log("姓名:" + stu.name); //通过.操作符,获取对象中的属性
  83. console.log("年龄:" + stu["age"]); //通过关联数组的方式访问对象属性
  84. console.log("第一个爱好:" + stu["hobby"][0]); //通过二维数组方式访问对象属性
  85. console.log("校名:" + stu["schoolInfo"]["school"]); //通过二维关联数组方式访问对象属性
  86. //通过for(属性名称 in 对象名) {属性值 = 对象名[属性名]}语句遍历对象属性
  87. for (key in stu) {
  88. console.log(key, ":", stu[key]);
  89. }
  90. //上下两种方法结果相同
  91. stuKey = Object.keys(stu); //Object.keys(对象名)获取对象的属性名称
  92. stuKey.forEach(function (value) {
  93. console.log(value, ":", this[value]);
  94. }, stu);
  95. //--------------------------------------------
  96. //函数
  97. //-------------------------------------------------
  98. //定义函数,两数之间的和
  99. function sum(start, end) {
  100. var sum = 0;
  101. //for循环
  102. for (var i = start; i <= end; i++) {
  103. sum += i;
  104. }
  105. return sum;
  106. }
  107. console.log("1-100的和为:", sum(1, 100));
  108. //函数表达式 ,可以把函数赋给一个变量,通过变量调用函数
  109. var sum = function (start, end) {
  110. var sum = 0;
  111. var i = start;
  112. //while循环
  113. while (i <= end) {
  114. sum += i;
  115. i++;
  116. }
  117. return sum;
  118. };
  119. console.log("1-10的和为:", sum(1, 10));
  120. //直接调用函数
  121. console.log(
  122. "1-50的和为:",
  123. (function (start, end) {
  124. var sum = 0;
  125. var i = start;
  126. //do while 循环
  127. do {
  128. sum += i;
  129. i++;
  130. } while (i <= end);
  131. return sum;
  132. })(1, 50)
  133. );
  134. //--------------------------------------------
  135. //JS对象序列化为json字符串
  136. //--------------------------------------------
  137. var stu1 = {
  138. name: "hugn", //对象中可以包含简单数据类型
  139. age: 32,
  140. sex: "female",
  141. isStudent: false,
  142. //对象中可以包含数组
  143. hobby: ["reading book", "listen music", "programming"],
  144. //对象也可以包含另一个对象
  145. schoolInfo: {
  146. grade: "08-02",
  147. department: "计算机科学与技术",
  148. school: "人民大学",
  149. },
  150. //定义对象方法,返回名字
  151. getName: function () {
  152. return this.name;
  153. },
  154. //定义对象方法,更改名字
  155. updateName: function (value) {
  156. this.name = value;
  157. },
  158. updateAge: function (value) {
  159. this.age = value;
  160. },
  161. };
  162. console.table(stu1); //通过表格方式显示对象属性
  163. var stuName = stu1.getName(); //获取对象中的名字
  164. console.log(stuName);
  165. stuName = "Eric";
  166. stu1.updateName(stuName); //更改对象中的名字
  167. console.log(stu1.getName());
  168. //将js对象序列化为一个json字符串
  169. var stuJson = JSON.stringify(stu1);
  170. //序列化后的json字符串,只包含已经定义并赋值的属性值
  171. console.log(stuJson);
  172. // stringify(JS对象,需要序列化的属性数组)
  173. stuJson = JSON.stringify(stu1, ["name", "age", "sex"]);
  174. console.log(stuJson);
  175. stu1.updateAge(45); //更改年龄
  176. //stringify(js对象,回调函数(对象属性名,对象属性值))
  177. stuJson = JSON.stringify(stu1, function (key, value) {
  178. switch (key) {
  179. case "sex":
  180. if (value == "male") return "女";
  181. else return "男";
  182. case "age":
  183. if (value < 30) return "还年轻,抓紧奋斗";
  184. else if (value >= 30 && value < 40) return "已到而立之年";
  185. else if (value >= 40 && value < 50) return "已到不惑之年";
  186. else if (value >= 50 && value < 60) return "知天命";
  187. else return "该退休啦!";
  188. default:
  189. return value;
  190. }
  191. });
  192. console.log(stuJson);
  193. //----------------------------------------------------
  194. //将json字符串解析为一个js对象JSON.parse(json字符串,回调函数(属性名,属性值))
  195. //----------------------------------------------------
  196. var jsObj = JSON.parse(stuJson, function (key, value) {
  197. if (key == "sex") {
  198. if (value == "男") return "female";
  199. else return "male";
  200. }
  201. return value;
  202. });
  203. console.log(jsObj);
  204. var stu2 = {
  205. name: jsObj.name,
  206. age: jsObj.age,
  207. sex: jsObj.sex,
  208. isStudent: jsObj.isStudent,
  209. };
  210. console.log(stu2);
  211. </script>
  212. </body>
  213. </html>
  • 代码运行效果图




Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:JSON.stringift, JSON.parse, 这二个方法, 可能很多人只知道第一个参数, 其实第二个参数也很重要
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post