javascript代码实例教程-Javascript之旅――第二站:对象和数组

发布时间:2019-01-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Javascript之旅――第二站:对象和数组脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 一觉睡到中午,本来准备起来洗洗继续睡,不过想想没辙,还得继续这个系列,走过变量的第一站,第二站我们再来看看对象和数组

 

 

 

一:对象

 

    说起对象,我们不自然就想起了面向对象中自封装的一个类,同样JS中也是遵循这个守则,在web编程中几乎天天用到的就是JSON。是的,

 

这就是一个对象,不过这个对象下面的字段都是字符串和值类型,如下图。

 

1     VAR delivery = {

2         no: 1,

3         sendtime: "2014-11-25",

4         way: "PJS"

5     };

 

 

从上面可以看出delivery中只具有基本的字符串和数值类型,当然给你玩的可不仅仅就这么多,除了基本的类型,我们还可以定义一个数组类型

 

函数类型字段,就像下面这样。

 

复制代码

 1     var delivery = {

 2         no: 1,

 3         sendtime: "2014-11-25",

 4 

 5         //三个可用配送地址

 6         address: ["北京", "上海", "南京"],

 7 

 8         way: "PJS",

 9 

10         //根据逻辑是否支持配送

11         cansend: function () {

12             //LOGic code....

13             return true;

14         }

15     };

复制代码

现在我们的delivery类刹那间就丰富起来了,有丰富的可用配送地址,有是否可以配送的逻辑运算,是不是有了C#中的类的感觉?可能有人会说,

 

C#中有索引器,有属性,有事件等等这些,其实这些都是编译器给的语法糖,真的一点都不好玩,本质上都是些方法,有些人就会被这些糊弄到

 

了而没有看到本质的东西。

 

  现在对象是创建出来了,下一步就是怎么用呢?通常有两种方法:

 

 

 

<1>  "." 运算符

 

   这种方法,我想是人都应该知道,所以没什么好说的,比如:delivery.way。

 

 

 

<2> 索引方式

 

  这种不知道有多少人清楚,就是用字符串索引的方法去寻找,比如我想去找delivery中字符串为“way”的字段值?因为这个“way"字符串

 

可能来自用户的输入,那么这种情况在C#里面叫做后期绑定,只能用反射来寻找类的元数据,然后再输出强类型way的值,但是在JS中肯定

 

是没有元数据的,不过大概也是用了类似反射的方法动态绑定的,说了这么多,我们来看看例子。

 

 

 

 

 

可能有些人想问,JS在内部是不是用哈希做的,我只能说遗憾的是,不像C#可以反编译或者看看IL,但是在JS中你是没法看到底层做了些

 

什么,不过我觉得看似哈希,其实跟C#反射差不多,毕竟key都是string,而value却是各种类型都有,string,function,int,array等等,

 

有值类型,有引用类型,这些大杂烩都放到value,我觉的不好操作是一点,也不符合设计规范,既然觉得不是hash,在内部在寻找”way“的

 

时候只能采用遍历的方式了。

 

 

 

 

 

二:数组

 

  说起数组,先要看看数组的定义,两种方式,字面量和Array构造函数,如下图:

 

1         var s = [1, "ctrip"];

2         var a = new Array(1, "ctrip");

不过要是你仔细观察,你也许会发现,字面量能做到的,array构造函数都能做到,字面量做不到的,array也能做到,比如初始化数组的个

 

数。也就是array构造函数的第一个参数。

 

 

 

 

 

因为看不到array中的底层代码,真是非常的伤心,所以我只能猜测一下,字面量[] 只是js提供给我们的语法糖,底层应该还是调用array的

 

第二个重载函数。

 

 

 

 

 

   第二个觉得有意思的地方就是,我们会发现一个现象,数组居然还能和对象扯到一块,最后会搞得你眼花缭乱,也许这个就是无类型的灵活

 

性,有利有弊吧。

 

  

 

     从图中我们可以看到,通过s.name="cnblogs"这种类对象赋值的方式,可以将key和value加入到数组中,并且你还可以通过s.name和

 

s["name"]输出结果值,这就说明数组本质上还是类,只不过在类里面做了一些高层封装,比如需要定时的统计length大小,也就造成了可

 

以用两个方式输出结果值,不过这就造成了索引数组和关联数组并存的情况了。如果在C#里面,普通的索引数组,我们知道他们在堆中的空

 

间具有连续性,这样就可以使用索引来达到O(1)查找,但是在js中这样各种类型混在一起,我想应该也没有办法做hash查找,因为这样hash

 

函数真的很难做,让我写可能写不出来,不过同样很可惜的是,看不到array的码,所以没有发言权了。

 

    然后数组方面就没什么好说的了,什么for和forin遍历,数组中常用的操作方法,比如pop,push,join,unshift,shift,大家都能看不到源码,

 

也就只能见名识义的用吧。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Javascript之旅――第二站:对象和数组全部内容,希望文章能够帮你解决javascript代码实例教程-Javascript之旅――第二站:对象和数组所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。