js中数组与对象的那些事

可以说js最重要的章节就是数组和对象了!因为它们牵扯了太多的东西了,例如:prototype,this引用。这些都是js核心的东西,可以说如果数组与函数里的东西弄懂了,你的js上升了一个层次。
我们现看一下数组与对象有什么共同处。还记得for-in的使用吗?!它可以遍历数组所有元素,对象的可枚举属性。从这里我们可以看出它俩有共同处,就是他们都是由一组复合数据构成的。但是学过c,c++以及java的同学可能知道在c,c++以及java它们里的对象也是复合数据构成的,但是前者是结构体,而后者是由哈希表实现的,所以可以说js里的对象与数组没有实质的区别,只是技术术语不同而已。
现在来看看数组,数组分为普通数组和关联数组。普通数组就是通过下标0,1,2......等数字访问的,而关联数组的下标不是数字而是字符串访问的,也就是哈希表。所以从这里可以知道对象与数组的关系匪浅,哈哈!不过在使用时最好不要通过关联数组来表示数组,最好就用普通数组。
说完了它们一点渊源关系,让我们正式介绍一下数组的使用。
1)var arry = [element1,element2......] 
例1:var arry=[1,2,3,"heihei","hi"];
例2:var arry=[];
2)  var arry = new Arry([number_of_elements][element1,element2.......]);
例1:var arry=new Arry(); 
例2:var arry=new Arry(2);   //这里是返回一个长度为2的数组,并不是返回一个含有元素为2的数组
例3:   var arry=new Arry("hi",'123445667',1234);  //这里是返回一个含有字符串hi和123445667,和number类型的1234

这里顺便说一下这样的声明方式为文本标记法!


下面我们看一下对象吧,这是最关键的东西了!对象,对象,对.........好像内心受到了伤害!!!!
先看一下对象的文本标记法:
列1: var object  = {
name: "666666",
age: 18,
address: "火星",
}

这里我就不用文法叙述对象了,因为太复杂了。
我们看一下这个列子,这个例子,每一个属性后面都有一个“”:“”,每个属性值后面是一个“”,“”与相关属性隔开。这里顺便说一下,每个属性名字可以加双引号,
例1:
var object  = {
“name”: "666666",
“age”: 18,
“address”: "火星",
}

这里可能有人会问这不是多次一举么!!!!其实是因为有时我们想用不符合命规则的属性名。列如我们想要100000000money这个属性名怎么办,如果直接不加引号就会出错,
这是属性名加引号就是很好的解决,但是当你使用时可不能直接object_name.100000000money,只能用object_name["100000000money"],这样才可以访问。
下面我们通过利用构造器来使用。
例2:
function test()  //这里为了方便叙述,就不加具体的函数体了。
{
}
var test = new test();//对于没使用过面向对象语言的同学可能忘记加new ,如果只这样的话就变成函数调用了,
后面将会有一个例子来说明通过函数调用来构造对象,相信你应该已经猜到了,利用return来达到不用new来构造对象。

通过构造函数来实施构造对象,就是实现写好一个构造函数,最后new 一下就好了。


原型开一个头:

说到对象不得不说prototype(原型),js是基于对象的不是面向对象的,可以说它是面向对象的子集,大家都知道js是没有类的概念的。不过我认为作为一个脚本确实没必要做成完全面向对象的,毕竟脚本都是完成一些并不是非常复杂的工作,如果让其完全面向对象,速度会下降。(这是本人的一点浅薄认知,有不同意见的或者知道更深层次原因的欢迎交流)


说到原型,大家都知道在每个函数里都有一个prototype属性。大家可以思考一下:你看到基于对象这几个词是有没有想过你会怎么实现呢?

我在看到这几个词时我想到的就是在对象里加一个你想使用其它对象的引用。然后一看,它确实这么干的,哈哈!

例:

function test_prototype()
{
}

alert( alert(typeof test_prototype.prototype));

结果是object对象!因为object是所有对象的祖先对象嘛!



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值