zoukankan      html  css  js  c++  java
  • javaScript的对象和数组

      在javascript中,数组和对象时2种不同的数据类型,而且它们也是最重要的2种数据类型。

      对象

      1.创建对象

      创建对象的最简单方法就是在javascript代码中加入一个对象直接量。对象直接量是用逗号分开的一对对的属性名和值的列表,包含在意个花括号之中,每个属性名都可以使一个javascript的标识符或一个字符串,每个属性值可以是一个常量或任意的javascript表达式。

            var empty = {};
            var point = { x: 0, y: 0 };
            var circle = { x: point, y: point.y + 1, radius: 2 };
            var home = {
                "name": "Homer Simpson",
                "age": "34",
                "married": true,
                "occupation": "plant operator",
                'email': "homer@example.com"
            };

      new运算符可以创建具体的一类对象。在new的后面跟着调用一个构造函数,它用来初始化对象属性。

            var a = new Array();
            var b = new Date();
            var r = new RegExp("haha","hehe");

      2.对象的属性

      通常用“.”运算符来存储对象的属性的值。位于"."运算符左边的值是想要访问其属性的对象。通常,它只是包含了该对象的引用的变量名,但它可以是任何一个结果对象的javascript表达式。位于“.”右边的值应该是属性名,它必须是以个标识符,而不能使字符串或表达式。

            var book = {};
            book.title = "java";
            book.chapter1 = new Object();
            book.chapter1.title = "c#";
            book.chapter1.page = 11;
            book.chapter2 = { title: "c++", page: 6 };
            //可以通过alert来测试

      可以使用运算符delete来删除已个对象的属性

            delete book.chapter2;

      3.作为关联数组的对象

      我们已经见过用运算符“.”来取一个对象属性,而数组更常用的存取属性运算符是[]。 

            book.chapter2;
            book["chapter2"];
            //2个表达式的值相等

      在C、C++等强类型语音中,一个对象的属性石固定的,而且必须预定义这些属性的名字。由于javascript是一种松类型的语言,它不采取这一规则,所以在用javascript编写的程序中,可以为对象创建任意数目的属性。但采用用运算符“.”来取一个对象的属性时,属性名是用标示符标示的。而在javascript程序中,标示符必须被逐个输入,它们不是一种数据类型,因此程序不能对它们进行操作。但用数组的[]表示方法来存取一个对象的属性时,属性是用字符串表示的。所以可以在程序里面进行操作。

            var a = { a1: 1, a2: 2, a3: 3, a4: 4 };
            var b = 0;
            for (i = 1; i <= 4; i++) {
                b = b+a["a" + i];
            }
            alert(b);//10

       4.通用的object属性和方法

      没一个对象都有constructor属性,它引用了初始化这个对象的构造函数。

            var d = new Date();
            //可以用判定对象的类型
            if ((typeof d == "object") && (d.constructor == Date)) {
                alert("is Date");
            }
            else {
                alert("Not Date");
            }

      数组

      数组array是一个有序的,值的集合。每一个值叫做一个元素(element),每个元素在数组中都有一个数字化的位置较下标(index)。由于javascript是一种非类型语言,所以一个数组的元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同的类型。

            var empty = [];        //空数组
            var a = [2, 3, 4, 5, 6];
            var b = [1.1, true, "a"];//元素可以为不同的类型
            var base = 1024;
            var table = [base, base + 1, base + 2, base = 3]; //数组元素可以使表达式
            var c = [[1, { x: 1, y: 2}], [2, { x: 3, y: 4}]]; //数组直接量可以包含对象直接量或者其他的数组直接量

       创建数组的另一种方式是使用Array构造函数。

            var a = new Array();
            var a = new Array(1, 2, 3, "1", "2");
            var a = new Array(10);//指定数组的长度

      数组元素的读写,数组的第一个下标为0;

            //数组可以通过使用[]方括号来存储数组
            var a = a[0];
            a[1] = 3.14;
            i = 2;
            a[i] = 3;
            a[i + 1] = "hello";
            a[a[i]] = a[0];

      前面的已经提到,[]运算符可以用来访问对象的已命名属性

            my['a'] = 2;
            //因为数组时一种特殊的对象,可以再数组上定义非数字的对象属性,并且使用,或者[]的语法来访问它

      数组的下标范围是0 - 2的32次方 的整数,如果数组的下标为负数、浮点数、布尔值、对象及其他值,javascript会直接将它转换为一个字符串,用生成的字符串作为对象的属性名字。

      添加数组的新元素

      好像在C# 等语言中,数组时具有固定的元素的,必须在创建时指定数组长度。而在javascript中则不同,它的数组可以具有任意个数的元素,可以再任意时刻改变元素个数。

        //添加元素,直接赋值
            a[10] = 10;

      在javascript中数组 是稀疏的。这意味着数组的下标不必落在一个连续的数字范围内,只有那些真正存储在数组中的元素才能够有javascript实现分配到内存。

            a[0] = 1;
            a[10000] = 10000;
            //解析器只给数组下标为0和10000的元素分配内存,而并不给0到10000之间的那9999个元素分配内存

      3.删除数组元素

      delete运算符把一个数组的元素设置为undefined值,但是元素本身还继续存在。要真正的删除一个元素,以使下标位置高于它的所有元素都向下迁移到较低的下标位置,必须使用一个数组的方法.

            var b = [1, 2, 3, 4, 5, 6, 7];
            b.shift()//删除第一个元素
            b.pop(); //删除最后一个元素
            b.splice(2,3); //删除一个区间的元素

      数组的长度

      所有数组无论是由构造函数array()创建的,或者是直接创建的。它们都有一个特殊的属性length,和常见的对象属性不同,数组的length属性石自动更新的。

            var a = new Array(); //a.length=0
            a = new Array(10);   //a.length=10
            a = new Array(1, 2, 3);   //a.length=3
            a = [1, 2];     //a.length=2
            a[5] = -1;  //a.length=6
            a[49] = 0;  //a.length=50

      多维数组

      虽然javascript并不支持真正的多维数组,但是它允许数组的元素为数组的数组,这样就非常接近多维数组。要存储一个数组的元素为数组里面的元素,只要使用多次[]运算符即可

            var a = [[1, 2], [3, 4], [5, 6]];
            alert(a[0][1]);//2

      数组的方法

            //join把一个数组的所有元素都转为字符串
            var a = [1, 2, 3, 4, 5, 6];
            //alert(a.join()); //join把一个数组的所有元素都转为字符串 输出为1,2,3,4,5,6
            //alert(a.join('&')); //join把一个数组的所有元素都转为字符串,还可以指定分隔符 输出为1&2&3&4&5&6
    
            var b = "1,2,3,4,5,6,7";
            b.split(',');//split 和 join 相反 是把一个字符串,拆分为数组
            //alert(b[0]);
    
            //reverse把一个数组元素顺序颠倒
            a.reverse(); 
            alert(a[0]);
    
            //concat能创建并返回一个数组,这个数组包含了调用concat的原始数组的元素
            var c = [1, 2, 3];  //concat能常见
            a.concat(4.5)    //returns [1,2,3,4,5]

      

  • 相关阅读:
    VC编译器
    位域
    位域2
    函数调用时刻的堆栈情况
    字节对齐2
    Python学习笔记(6)while循环、while嵌套
    Python学习笔记(7)字符串Str
    Python学习笔记(3)输出、输入、输出输入综合小练习
    Python学习笔记(1)Python介绍、解释器、第一个python程序、注释
    Python学习笔记(4)运算符、运算符小练习
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/2947810.html
Copyright © 2011-2022 走看看