`

javascript中的数组对象以及json学习笔记

 
阅读更多
1.Javascript中的数组
数组的创建
数组下标操作
数组的方法

concat join slice 不修改原数组

push pop unshift shift reverse sort splice 修改原数组

2.Javascript中简单对象的创建与属性操作
简单对象的创建
简单对象属性的添加
简单对象属性的访问
通过对象直接量的方式定义包含属性的对象

3.JSON数据格式
JSON(Javascript Object Notation)是一种轻量级的数据交换格式。
纯文本,Javascript原生支持
与XML相比:
优势实在Javascript当中解析快,操作方便,不需要使用DOM。
缺点是在服务器端,生成正确的JSON格式数据与生成XML格式数据相比,服务器端语言的辅助包成熟度较低。


4.面向对象的Javascript
类的定义
公用属性和方法的定义
原型对象


===================================================

1.Javascript中的数组

数组的创建


Java代码 收藏代码
  1. <scripttype="text/javascript">
  2. functionarrayTest(){
  3. //使用newArray()
  4. vararray1=newArray();
  5. //使用[]操作符
  6. vararray2=[];
  7. //创建的同时定义数组中的元素
  8. //使用newArray()方式
  9. vararray3=newArray(1,2,3);
  10. //使用[]操作符
  11. vararray4=[1,2,3];
  12. //创建多维数组
  13. //使用newArray()方式
  14. vararray5=newArray(1,newArray(2,3),4);
  15. //使用[]操作符
  16. vararray6=[1,[2,3],4];
  17. //数组的下标操作
  18. //获取数组中的某元素的值
  19. alert(array3[1]);
  20. //设置数组中某个下标对应的元素值
  21. array4[2]=111;
  22. //访问对维数组中的元素
  23. alert(array5[1][0]);
  24. //javascript中的数组时可以动态改变大小的,因此可以直接给一个不存在的下标设置元素值
  25. array[99]=100;
  26. //数组中的方法
  27. //concat,这个方法可以用来做数组的连接或者说合并,原数组内容不会变更,将返回一个新的数组
  28. vararray41=array.concat(101,102,103);
  29. vararray42=array.concat([104,105]);
  30. vararray43=array.concat(array4);
  31. //join,这个方法可以将数组当中的元素,按照指定的分隔符连接成字符串输出,原数组的内容不会变
  32. varstrarray431=array43.join("");//1211112111
  33. varstrarray432=array43.join("+");//1+2+111+1+2+111
  34. //slice,这个放好可以返回当前数组的子数组,原始数组的内容不会改变
  35. varslicearray1=array43.slice(0,3);//从0下标开始,到3下标之前的元素返回新的数组[1,2,111]
  36. varslicearray2=array43.slice(4);//从4下标开始,到数组尾部的所有元素都返回成新的数组[2,111]
  37. //从当前数组的倒数第二个元素开始,当前数组倒数第一个元素之前的所有内容返回一个新的数组[2]
  38. varslicearray3=array43.slice(-2,-1);
  39. //push,pop,在数组尾端追加(push)或弹出(pop)元素,将会修改原数组的内容
  40. array43.push(200);
  41. array43.push(201,202);
  42. array43.push([201,202]);
  43. array43.push(array41);
  44. vararraypop=array43.pop();
  45. vararraypop=array43.pop();
  46. //unshift,shift,在数组的开头进行追加(unshift)和弹出(shift)的操作,将会修改原数组的内容
  47. array43.unshift(300);
  48. array43.unshift(301,302);
  49. array43.unshift([303,304]);
  50. vararrayshift=array43.shift();
  51. vararrayshift2=array43.shift();
  52. //reverse,这个方法可以翻转数组中的元素,修改原数组的内容
  53. array43.reverse();
  54. //sort,这个方法可以对数组中的元素进行排序,修改原数组的内容
  55. array43.sort();//无参,是按照字母顺序对数组中的元素进行了升序的排列
  56. array43.sort(function(a,b){
  57. returna-b;
  58. });//就是按照数值大小,进行一个升序的排列。如果返回的是负值,则a会出现在b的前面
  59. array43.sort(function(a,b){
  60. returnb-a;
  61. });//就是按照数值大小,进行一个降序的排列。
  62. //splice,可以删除数值中的一部分元素,并且把删除的内容进行返回,原数组的内容会发生变更,还可以在制定位置添加元素
  63. //第一个参数,删除元素开始的下标位置
  64. //删除元素的个数
  65. array43.splice(index,howMany,element1,elementN);
  66. //用局部变量来接收删除的返回值,会把删除部分的内容进行返回
  67. varsplicearray1=array43.splice(4,2);//从下标为4的元素开始,删除两个元素
  68. varsplicearray2=array43.splice(4);//从下标为4的元素开始,直到数组末尾的所有元素都被删除
  69. array43.splice(1,0,400,401);//从下标为1的元素之前,0表示不删除,插入400,401
  70. array43.splice(1,0,[500,501]);//从下标为1的元素之前插入500,501
  71. }
  72. </script>


===================================================================



2.Javascript中简单对象的创建与属性操作


Java代码 收藏代码
  1. <scripttype="text/javascript">
  2. functionobjectTest(){
  3. //方式1,通过newObject()
  4. varobj1=newObject();
  5. //方式1,通过{}操作符
  6. varobj2={};
  7. //增加属性,使用.操作符
  8. //使用newArray()方式
  9. obj1.num=1;
  10. obj1.str="String";
  11. obj1.hell=function(){
  12. alert("hello!");
  13. }
  14. obj2.obj=obj1;
  15. //属性的访问,方法1,使用.操作符
  16. alert(obj2.obj.num);
  17. alert(obj2.obj.str);
  18. obj1.hello();
  19. //属性的访问,方法2,使用[]操作符
  20. alert(obj2["obj"]["num"]);
  21. alert(obj2["obj"]["str"]);
  22. obj1["hello"]();
  23. alert("");
  24. //对象直接量定义方法,利用{}
  25. varobj3={
  26. num:1,
  27. str:"String",
  28. hello;function(){
  29. alert("hello!");
  30. }
  31. };
  32. }
  33. </script>

======================================================================
3.JSON数据格式
Java代码 收藏代码
  1. <scripttype="text/javascript">
  2. functionjsonTest(){
  3. //JSON数据格式定义
  4. varjson1="[1,2,{"+
  5. "a:123,b:'String',c:[100,101]'"+
  6. "}]";
  7. //javascript的一个内置方法eval(),返回回json这段数据格式所对应的javascript的数组或者对象
  8. varjsonArray=eval(json1);
  9. varjson2="{"+
  10. "a:'hello',b:[1,2,3],c:function(){alert(\"Hi!!!\")}"+
  11. "}";
  12. //错误写法
  13. //varjsonObject=eval(json2);
  14. //正确的写法
  15. varjsonobj=eval("("+json2+")");
  16. 如果从服务器端返回回来的json数据格式他最终代表的是一个数组,可以直接用eval的方式对他进行执行,
  17. 返回javascript里面的一个数组。
  18. 如果从服务器端返回的json格式对应的是一个对象,我们必须要在他的外层加上括号(),
  19. 才会返回正确的对象,否则会报错。
  20. }
  21. </script>




======================================================================
4.面向对象的Javascript
Java代码 收藏代码
  1. <scripttype="text/javascript">
  2. //javascript中类的定义,需要靠function来模拟
  3. /*
  4. functionTeacher(){
  5. }*/
  6. //建议采用下面的形式来定义一个js中的类,可以和普通的function进行区分
  7. //建议类名首字母大写,以便更好的和普通的function进行区分
  8. varTeacher=function(){
  9. }
  10. //定义一个Book的类,这个function还承担了模拟构造函数的工作
  11. //在使用new操作符创建Book类的对象时,这个function中的代码会被执行
  12. //这里面的this代表当前对象
  13. /*
  14. varBook=function(name){
  15. //定义共有的属性
  16. this.name=name;
  17. //定义共有的方法
  18. this.getName=function(){
  19. returnthis.name;
  20. };
  21. this.setName=function(name){
  22. this.name=name;
  23. }
  24. }*/
  25. /*********************************************
  26. //一种更为合适的公有属性和方法定义
  27. varBook=function(name){
  28. //Book.prototype.name=name;
  29. //公有属性,在构造方法里面来定义,通过this关键字
  30. this.name=name;
  31. }
  32. //Book.prototype.name="";//优先访问对象上的属性,即这里的this.name,没有才会访问(找)原型对象上的name;
  33. //公有的方法,在原型对象上定义
  34. Book.prototype.setName=function(name){
  35. this.name=name;
  36. };
  37. Book.prototype.getName=function(){
  38. returnthis.name;
  39. };**************************************/
  40. //一种更为合适的公有属性和方法定义
  41. varBook=function(name){
  42. //Book.prototype.name=name;
  43. //公有属性,在构造方法里面来定义,通过this关键字
  44. this.name=name;
  45. if(typeofBook._init="undefined"){
  46. //公有的方法,在原型对象上定义
  47. Book.prototype.setName=function(name){
  48. this.name=name;
  49. };
  50. Book.prototype.getName=function(){
  51. returnthis.name;
  52. };
  53. }
  54. Book._init=true;
  55. };
  56. functionooTest(){
  57. varteacher=newTeacher();
  58. alert(teacherinstanceofTeacher);
  59. varbook1=newBook("AJAX");//这个new操作相当于创建了一个简单对象,调用了类的构造方法
  60. varbook2=newBook("AJAX1");
  61. alert(book1.getName());
  62. alert(book2.getName());
  63. book1.setName("JAVA");
  64. alert(book1.getName());
  65. alert(book2.getName());
  66. //function上面都有一个原型对象
  67. varproto=Book.prototype;
  68. proto.str="String";
  69. proto.hello=function(){
  70. alert("Hello");
  71. };
  72. //原型对象上定义了属性之后,拥有这个原型对象的function,
  73. //它所模拟的类创建出的对象,就可以拥有原型对象上定义的属性
  74. alert();
  75. }
  76. </script>

-----------------------------------------------------------------
Java代码 收藏代码
  1. <scripttype="text/javascript">
  2. //展示原型对象上定义公有属性的另一个问题
  3. varTeacher=function(){
  4. }
  5. Teacher.prototype.student=[];
  6. Teacher.prototype.addStudent=function(sname){
  7. this.student.push(sname);
  8. };
  9. Teacher.prototype.showStudent=function(){
  10. alert(this.student);
  11. };
  12. functionoo4Test(){
  13. varteacher1=newTeacher();
  14. varteacher2=newTeacher();
  15. teacher1.addStudent("wang");
  16. teacher2.addStudent("lee");
  17. teacher1.showStudent();
  18. teacher2.showStudent();
  19. alert();
  20. }
  21. </script>






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics