博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript – 6.JS面向对象基础(*) + 7.Array对象 + 8.JS中的Dictionary + 9.数组、for及其他...
阅读量:6839 次
发布时间:2019-06-26

本文共 3309 字,大约阅读时间需要 11 分钟。

 

 

 

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


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

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

 

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

 

7.Array对象


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

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

 

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

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

 

7.1 练习:

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

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

 

7.2 练习:

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

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

 

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. var f = function (arr) {
  2. for (var i = 0; i < arr.length / 2; i++) {
  3. var temp = arr[i];
  4. arr[i] = arr[arr.length - i - 1];
  5. arr[arr.length - i - 1] = temp;
  6. }
  7. return arr;
  8. }
  9. var arr = new Array();
  10. arr[0] = 3;
  11. arr[1] = "a";
  12. arr[2] = 8;
  13. arr[3] = "haha";
  14. arr[4] = 2;
  15. arr[5] = 1;
  16. alert(arr);
  17. alert(f(arr));
  18.  

 

还有一种方法:

隐藏行号 复制代码 这是一段程序代码。
  1. var f = function (arr) {
  2. var w;
  3. var s = "";
  4. for (var i = 0; i < arr.length; i++) {
  5. w = arr.length - i - 1;
  6. s = s + "," + arr[w];
  7. }
  8. return s.substring(1, s.length);//因为第1个s后面跟1个","所以需要截取,
  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. arr[6] = 11;
  18. alert(arr);
  19. alert(f(arr));
  20.  

 

 

8.JS中的Dictionary


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

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

 

像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的方法

 

   tom!jim!lily

for循环可以像C#中的foreach一样用

 

for循环还可以获得一个对象所有的成员,类似于.Net中的反射

for (var e in document) {
            alert(e);
        }
有了它没有文档也可以进行开发。

转载地址:http://bowul.baihongyu.com/

你可能感兴趣的文章
Revit API导出GBXML
查看>>
Android实现ListView圆角效果
查看>>
Python--day64--内容回顾
查看>>
润乾V5手机报表说明文档
查看>>
Unix系统介绍
查看>>
照片切换
查看>>
求矩阵的局部极大值(15)
查看>>
Eclipse详细设置护眼背景色和字体颜色并导出
查看>>
Android Gradle 构建工具(Android Gradle Build Tools)是什么?
查看>>
AOP和IOC的作用
查看>>
Apache的Rewrite规则详细介绍
查看>>
ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
查看>>
go语言的selector
查看>>
ipa 打包遇到的坑
查看>>
正则表达式
查看>>
js之操作JSON数据
查看>>
Design Hit Counter
查看>>
BZOJ 3576 江南乐
查看>>
NAT网络地址转换
查看>>
DateTime格式化问题
查看>>