JS数组也是一种对象。

我们用JavaScript处理的所有东西,都可以视为是一种对象。

JavaScript中有两种数据类型,基本类型数对象类型,但是基本类型基本都是包括在对象类型之中的。

数组、函数、Date在JavaScript中都是预定义的对象,它们内部都包含了方法、属性和各自的标准化句法。

JavaScript数组有以下三种不同的属性:
1 数组的索引也是其属性
2 内置属性
3 你可以自己添加自定义属性
前两种属性是大家比较熟知的,你可能每天都在使用,但是我还是想在这里简单的多说两句,然后再来谈谈如何给数组添加自定义属性。

将索引作为属性
JavaScript数组可以使用方括号句法,例如var ary = [“orange”,"apple","lychee"];。
数组元素的索引基本上也是一种属性,而其属性的名称永远都是非负整数。
数组的索引元素对类似一个对象的关键值对。索引是数组对象的独特特性,与其他内置属性不同,它们可以单独通过方括号进行配置,例如 ary[3] = “peach”;。


内置属性
数组拥有内置属性,例如array.length。这个长度属性包含了一个整数值,用来表示数组的长度。
一般情况下,内置属性经常可以在数组等预先定义的JavaScript对象中找到。内置属性与内置方法联合在一起,它们可以对普通对象进行自定义,让对象满足不同的需求。
在访问内置属性的时候,你可以使用两种句法:object.key或是object[“key”]。也就是说,在获取数组长度的时候,你可以写成ary[“length"]。

为数组对象创建自定义属性

JS数组的自定义属性可枚举,但是不算入数组的length

它可以被for……in等循环所拣选

数组是一种预定义对象,它在不同的索引中储存了不同的种类的值。
通常情况下,我们没有给数组添加自定义属性的需要;也是出于这个原因,我们在刚刚学习JavaScript的时候,没有人告诉我们可以给数组添加属性。事实上,如果你想要向对待一般对象那样,给数组添加关键值对,你也可以使用一般的对象来达到目的。但是,这并不是说完全没有特殊情况,在某些情况下,你可以利用数组也是一种对象的事实,给它添加一个或多个自定义属性。

     var ary = ["orange","apple","lychee"];
     ary.itemClass = "fruits";
     console.log(ary); //  ["orange", "apple", "lychee", itemClass: "fruits"]

     for(var i = 0 ;i<ary.length;i++){
         console.log(ary[i]);
     }
     //依次打印  orange  apple  lychee

     for(var i in ary){
         console.log(ary[i]);
     }
     //依次打印  orange  apple  lychee  fruits

javaScript数组的三种属性—数组索引、数组内置属性、数组自定义属性的更多相关文章

  1. Ant 脚本打印系统属性变量、ant内置属性

    Ant 脚本打印系统属性变量.ant内置属性 作用 编写ant脚本的时候,经常会引用到系统属性,本脚本用于打印系统常用属性(System.getProperties)与环境变量(Environment ...

  2. 第三十五篇 类的内置属性(attr属性),包装和授权,__getattr__

    双下划线开头的attr方法,都是类内置的方法. 一. 如果没有在类里定义这三个方法,调用的时候就调用类内置的默认的方法 class Too: pass # 类没有定义这三个属性,就用系统默认的方法 t ...

  3. Maven的内置属性

    Maven共有6类属性: ①内置属性(Maven预定义属性,用户可以直接使用) ${basedir}表示项目的根路径,即包含pom.xml文件的目录 ${version}表示项目版本 ${projec ...

  4. poj 3486 A Simple Problem with Integers(树状数组第三种模板改段求段)

    /* 树状数组第三种模板(改段求段)不解释! 不明白的点这里:here! */ #include<iostream> #include<cstring> #include< ...

  5. 数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结

    1. 数组的三种声明方式 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test ...

  6. PHP数组输出三种形式 PHP打印数组

    PHP数组输出三种形式 PHP打印数组   $bbbb=array("11"=>"aaa","22"=>"bbb&qu ...

  7. 数组的三种方式总结 多维数组的遍历 Arrays类的常用方法总结

    一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...

  8. Javascript 创建对象的三种方法及比较【转载+整理】

    https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain 本文内容 引 ...

  9. JavaScript中的三种弹出对话框

    学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性 ...

随机推荐

  1. Linux基础命令---gunzip

    gunzip 解压缩被gzip压缩过的文件.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法      gunzip [-ac ...

  2. 热心网友设计出更美的Windows 10开始菜单

    开始菜单应该算是Windows操作系统的标志之一,Win8时微软曾做了大刀阔斧的改革,没想到招致一片负面评价,最终紧急推出了Win8.1系统. Win10推出后,微软等于整合了磁贴和传统风格,但也做不 ...

  3. mysql explicit_defaults_for_timestamp 变量的作用

    mysql 中有这样的一个默认行为,如果一行数据中某些列被更新了,如果这一行中有timestamp类型的列,那么么这个timestamp列的数据 也会被自动更新到 更新操作所发生的那个时间点:这个操作 ...

  4. P2865 [USACO06NOV]路障Roadblocks

    P2865 [USACO06NOV]路障Roadblocks 最短路(次短路) 直接在dijkstra中维护2个数组:d1(最短路),d2(次短路),然后跑一遍就行了. attention:数据有不同 ...

  5. SQL、SQL Server、MySQL与Oracle

    SQL (Structured Query Language),结构化查询语言,用来与多种数据库建立联系,根据ANSI(美国国家标准协会)的规定,SQL为RDBMS(关系型数据库)的标准语言. --- ...

  6. 20145307陈俊达《网络对抗》Exp5 MSF基础应用

    20145307陈俊达<网络对抗>Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,各式各样的漏洞在 ...

  7. 20145204《网络对抗》MAL后门原理与实践

    20145204<网络对抗>MAL后门原理与实践 实践内容说明 (1)使用netcat获取主机操作Shell,cron启动 (1分) (2)使用socat获取主机操作Shell, 任务计划 ...

  8. UVa 1471 Defense Lines - 线段树 - 离散化

    题意是说给一个序列,删掉其中一段连续的子序列(貌似可以为空),使得新的序列中最长的连续递增子序列最长. 网上似乎最多的做法是二分查找优化,然而不会,只会值域线段树和离散化... 先预处理出所有的点所能 ...

  9. VC 线程池

    参照:http://www.cnblogs.com/kzloser/archive/2013/03/11/2909221.html 参照:http://blog.csdn.net/pjchen/art ...

  10. Python3基础 if elif 示例 判断一个数在哪个区间内

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...