[关闭]
@GivenCui 2016-05-27T13:45:04.000000Z 字数 3291 阅读 679

重新认识字面量对象

js高级



目录



[JS课程合集跳转链接][1]


一、字面量对象的概念

JS的字面量对象, 就是最简单化的创建对象的方式, 和用构造函数创建的对象一样存在于堆内存中.


二、字面量对象表达式的语法

语法 { 属性1 : 属性值 , 属性2 : 属性值, .... }
属性访问
1. 通过" . " 语法访问    eg. obj.propertyName
2. 通过" [ ] " 语法访问    eg. obj["propertyName"]

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>创建字面量对象</title>
  6. <script type = "text/javascript">
  7. // 创建字面量对象
  8. // 里面可以是任意类型
  9. // 数组中也可以放对象
  10. var person = {
  11. name : "周大生",
  12. age : 18,
  13. isMarried : false,
  14. dog : {
  15. name : "Nimo",
  16. age : 0.2
  17. },
  18. friends : [
  19. {
  20. name : "杜甫",
  21. age : 18
  22. },
  23. {
  24. name : "诺顿",
  25. age : 500
  26. },
  27. {
  28. name : "乔布斯",
  29. age : 30
  30. },
  31. {
  32. name : "霍金",
  33. age : 48
  34. }
  35. ]
  36. };
  37. // 获得"Nimo"这个属性值
  38. console.log(person.dog.name);
  39. // 获得"杜甫"这个属性值
  40. console.log(person.friends[0].name);
  41. </script>
  42. </head>
  43. <body>
  44. </body>
  45. </html>

三、遍历字面量对象

用 for-in 方法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>遍历字面量对象</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. // 创建字面量对象
  10. // 里面可以是任意类型
  11. // 数组中也可以放对象
  12. var person = {
  13. name : "周大生",
  14. age : 18,
  15. isMarried : false,
  16. dog : {
  17. name : "Nimo",
  18. age : 0.2
  19. },
  20. friends : [
  21. {
  22. name : "杜甫",
  23. age : 18
  24. },
  25. {
  26. name : "诺顿",
  27. age : 500
  28. },
  29. {
  30. name : "乔布斯",
  31. age : 30
  32. },
  33. {
  34. name : "霍金",
  35. age : 48
  36. }
  37. ]
  38. };
  39. // 遍历自变量对象
  40. // tempPro是每个属性的名字
  41. // 想得到friends中的每个对象的名字和年龄
  42. for (var tempPro in person) {
  43. // console.log( tempPro);
  44. // console.log(person[tempPro]);
  45. if (tempPro === 'friends'){
  46. // 遍历friends数组
  47. for (var index in person[tempPro]) {
  48. console.log("我的朋友是" + person[tempPro][index].name + ",年龄是"+ person[tempPro][index].age);
  49. }
  50. }
  51. }
  52. </script>
  53. </body>
  54. </html>

字面量对象的实例(创建与遍历)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>字面量对象的实例(创建与遍历)</title>
  6. </head>
  7. <body>
  8. <script type="text/javascript">
  9. // 分析字面量对象
  10. // 字面量对象也可以搭建一种树形结构
  11. // 假数据,用来测试系统的
  12. //分析字面量对象
  13. var rootObj = {
  14. //地区数组
  15. regions : [
  16. //地区对象
  17. {
  18. regionName : "北京地区",
  19. //学校数组
  20. schools : [
  21. {
  22. schoolName : "北京一中",
  23. //班级数组
  24. classes : [
  25. {
  26. className : "H5-1604",
  27. //学生数组
  28. students : [
  29. {
  30. studentName : "丁丁"
  31. },
  32. {
  33. studentName : "马丹丹"
  34. }
  35. ]
  36. },
  37. {
  38. className : "iOS-1602",
  39. //学生数组
  40. students : [
  41. {
  42. studentName : "丁环宇"
  43. },
  44. {
  45. studentName : "张俊"
  46. }
  47. ]
  48. }
  49. ]
  50. },
  51. {
  52. schoolName : "北京二中",
  53. //班级数组
  54. classes : [
  55. {
  56. className : "H5-1605",
  57. //学生数组
  58. students : [
  59. {
  60. studentName : "刘升升"
  61. },
  62. {
  63. studentName : "张三三"
  64. }
  65. ]
  66. },
  67. {
  68. className : "iOS-1603",
  69. //学生数组
  70. students : [
  71. {
  72. studentName : "丁丁"
  73. },
  74. {
  75. studentName : "肖小军"
  76. }
  77. ]
  78. }
  79. ]
  80. }
  81. ]
  82. }
  83. ]
  84. }
  85. // 找到丁丁同学,并且打印其相关信息
  86. // 得到地区数组
  87. var regions = rootObj.regions;
  88. // 遍历地区数组
  89. for (var tempRegionIdx in regions) {
  90. //得到每个地区对象
  91. var tempRegion = regions[tempRegionIdx];
  92. //得到学校数组
  93. var schools = tempRegion.schools;
  94. // 遍历学校数组
  95. for (var tempSchoolsIdx in schools) {
  96. // 得到每个学校对象
  97. var tempSchool = schools[tempSchoolsIdx];
  98. // 得到班级数组
  99. var classes = tempSchool.classes;
  100. // 遍历班级数组
  101. for ( var tempClassIdx in classes) {
  102. // 得到每一个班级对象
  103. Var tempClass = classes[tempClassIdx];
  104. // 得到学生数组
  105. var students = tempClass.students;
  106. // 遍历学生数组
  107. for(var tempStudentIdx in students){
  108. // 得到每一个学生对象
  109. var tempStudent = students[tempSchoolsIdx];
  110. // 判断要找的学生
  111. if(tempStudent.name === '学生test'){
  112. console.log("\n 地区 : "+tempRegion.name + "\n 学校 : " + tempSchool.name + "\n 班级 :" + "\n 学生 : " + tempStudent.name);
  113. break;
  114. }
  115. }
  116. }
  117. }
  118. }
  119. </script>
  120. </body>
  121. </html>

四、数据模型

数据模型 : 我们会把JS中的字面量对象进行数据解析,解析后的数据会存储在相应的数据模型中,数据模型就是JS中的通过相应构造函数创建出来的一个个对象.

  1. /**************封装数据模型***************/
  2. // 最后把地区对象存到数组中
  3. // 地区的构造函数
  4. function Region (regionName) {
  5. this.regionName = regionName;
  6. // 学校数组
  7. this.schools = new Array();
  8. }
  9. // 学校的构造函数'
  10. function School (schoolName) {
  11. this.schoolName = schoolName;
  12. // 班级数组
  13. this.classes = new Array();
  14. }
  15. // 班级的构造函数
  16. function Class (className) {
  17. this.className = className;
  18. // 学生数组
  19. this.students = new Array();
  20. }
  21. // 学生的构造函数
  22. function Student (studentName) {
  23. this.studentName = studentName;
  24. }
  25. /********************************************/
  26. //在解析了*每一个对象*(用for-in遍历)后在相应的信息存入对应的对象
  27. // 每一个json字面量对象 ====> new一个实例对象
  28. // json字面量对象不是真正的对象概念,只是一种数据结构而已.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注