JavaScript – 6.JS面向对象基础(*) + 7.Array对象 + 8.JS中的Dictionary + 9.数组、for及其他

6.JS面向对象基础(*)

7.Array对象

  7.1 练习:求一个数组中的最大值。定义成函数。

  7.2 练习:将一个字符串数组输出为|分割的形式,比如“刘在石|金钟国|李光洙|HAHA|宋智孝|Gary|池石镇”。不要使用JavaScript中的Join函数。arr1.join("|")将数组用分隔符连接成一个字符串。

  7.3 练习:将一个字符串数组的元素的顺序进行反转。{"3","a","8","haha"} {"haha","8","a","3"}。不要使用JavaScript中的反转函数。提示: 第i个和第length-i-1个进行交换。定义成函数。myreverse

8.JS中的Dictionary

9.数组、for及其他

6.JS面向对象基础(*)


JavaScript中没有类的语法,是用函数闭包(closure)模拟出来的,下面讲解的时候还是用C#中的类、构造函数的概念,JavaScript中String、Date等“类”都被叫做“对象”,挺怪,方便初学者理解,不严谨。JavaScript中声明类(类不是类,是对象):

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         function Person(name, age) {
  3.             this.name = name;
  4.             this.age = age;
  5.             this.SayHello = function () {
  6.                 alert("你好,我是" + this.name + ",我" + this.age + "岁了");
  7.             }
  8.         }
  9.         var p1 = new Person("tom", 20);
  10.         p1.SayHello();
  11.     </script>

必须要声明类名,function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。var p1 = Person("tom", 30);//不要丢了new,否则就变成调用函数了,p1为undefined。new 相当于创建了函数的一个实例

7.Array对象


JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         var names = new Array();
  3.         names[0] = "tom";
  4.         names[1] = "jerry";
  5.         names[2] = "lily";
  6.         for (var i = 0; i < names.length; i++) {
  7.             alert(names[i]);
  8.         }
  9.     </script>

输出:分别弹出tom,jerry,lily

无需预先制定大小,动态。

 

7.1 练习:

求一个数组中的最大值。定义成函数。

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         function getMax(arr) {
  3.             var max = arr[0];
  4.             for (var i = 0; i < arr.length; i++) {
  5.                 if (arr[i] > max) {
  6.                     max = arr[i];
  7.                 }
  8.             }
  9.             return max;
  10.         }
  11.         var arr1 = new Array();
  12.         arr[0] = 12;
  13.         arr[1] = 32;
  14.         arr[2] = 25;
  15.         arr[4] = 12;
  16.         alert(getMax(arr1));
  17.     </script>
7.2 练习:

将一个字符串数组输出为|分割的形式,比如“刘在石|金钟国|李光洙|HAHA|宋智孝|Gary|池石镇”。不要使用JavaScript中的Join函数。arr1.join("|")将数组用分隔符连接成一个字符串。

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         function myjoin(arr) {
  3.             if (arr.length <= 0) {
  4.                 return "";
  5.             }
  6.             var s = arr[0];
  7.             for (var i = 1; i < arr.length; i++) {
  8.                 s = s + "|" + arr[i];
  9.             }
  10.             return s;
  11.         }
  12.         var arr = new Array();
  13.         arr[0] = "刘在石";
  14.         arr[1] = "金钟国";
  15.         arr[2] = "李光洙";
  16.         arr[3] = "HAHA";
  17.         arr[4] = "宋智孝";
  18.         arr[5] = "Gary";
  19.         arr[6] = "池石镇";
  20.         alert(myjoin(arr));
  21.     </script>

image

7.3 练习:

将一个字符串数组的元素的顺序进行反转。{"3","a","8","haha"} {"haha","8","a","3"}。不要使用JavaScript中的反转函数。提示:
第i个和第length-i-1个进行交换。定义成函数。myreverse

为什么length要除以2:因为

arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;

已经交换了。一次交换的是2个数。

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         var f = function (arr) {
  3.             for (var i = 0; i < arr.length / 2; i++) {
  4.                 var temp = arr[i];
  5.                 arr[i] = arr[arr.length - i - 1];
  6.                 arr[arr.length - i - 1] = temp;
  7.             }
  8.             return arr;
  9.         }
  10.         var arr = new Array();
  11.         arr[0] = 3;
  12.         arr[1] = "a";
  13.         arr[2] = 8;
  14.         arr[3] = "haha";
  15.         arr[4] = 2;
  16.         arr[5] = 1;
  17.         alert(arr);
  18.         alert(f(arr));
  19.     </script>

imageimage

还有一种方法:

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         var f = function (arr) {
  3.             var w;
  4.             var s = "";
  5.             for (var i = 0; i < arr.length; i++) {
  6.                 w = arr.length - i - 1;
  7.                 s = s + "," + arr[w];
  8.             }
  9.             return s.substring(1, s.length);//因为第1个s后面跟1个","所以需要截取,
  10.         }
  11.         var arr = new Array();
  12.         arr[0] = 3;
  13.         arr[1] = "a";
  14.         arr[2] = 8;
  15.         arr[3] = "haha";
  16.         arr[4] = 2;
  17.         arr[5] = 1;
  18.         arr[6] = 11;
  19.         alert(arr);
  20.         alert(f(arr));
  21.     </script>

8.JS中的Dictionary


JS中的Array是一个宝贝,不仅是一个数组,还是一个Dictionary,还是一个Stack。

隐藏行号 复制代码 这是一段程序代码。
  1.     <script type="text/javascript">
  2.         var pinyins = new Array();
  3.         pinyins["人"] = "ren";
  4.         pinyins["口"] = "kou";
  5.         pinyins["手"] = "shou";
  6.         alert(pinyins["人"]); //弹出ren
  7.         alert(pinyins.口);   //弹出kou
  8.         for (var k in pinyins) {
  9.             alert(k);       //分别弹出人、口、手   (注意:弹出的是key而不是value)
  10.         }
  11.         var arr = new Array();
  12.         arr[0] = "tom";
  13.         arr[1] = "Jim";
  14.         arr[2] = "Jerry";
  15.         for (var i in arr) {
  16.             alert(i);
  17.         }      //弹出0,1,2,理由同上
  18.     </script>
像Hashtable、Dictionary那样用,而且像它们一样效率高。

for (var k in pinyins) {
            alert(k);       //分别弹出人、口、手   (注意:弹出的是key而不是value)
        }

这是js中的foreach方式运用

课下练习:网页版的火星文翻译。

9.数组、for及其他


对于数组风格的Array来说,可以使用join方法拼接为字符串

隐藏行号 复制代码 这是一段程序代码。
  1. var arr = ["tom", "jim", "lily"];
  2.         alert(arr);
  3.         alert(arr.join("!"));//JS中join是array的方法,不像.Net中是string的方法

image   tom!jim!lilyimage
for循环可以像C#中的foreach一样用

for循环还可以获得一个对象所有的成员,类似于.Net中的反射
for (var e in document) {
            alert(e);
        }
有了它没有文档也可以进行开发。

原文地址:https://www.cnblogs.com/tangge/p/3091526.html