引用类型

来源:互联网 发布:地图软件开发 编辑:程序博客网 时间:2024/04/28 19:40

引用类型是一种数据结构用于将数据和功能组织在一起。

Object类型

创建object的实例有两种办法,第一种是用new操作后跟Object构造函数如:

var person = new Object ;person.name = "Zhangsan";person.age = 20;

另一种是使用对象字面量表示法,例如:

var person = {    name : "Zhangsan",    age : 20}

在对象字面量中,每个属性之间是用逗号“,”分隔的,但是最后一个属性结尾不能加逗号。
再访问对象的属性时可以使用点表示法,也可以使用方括号表示法,例如:

alert(person["name"];  //方括号表示法alert(person.name];    //点表示法

但是如果属性名含有空格“zhang san”,这样点表示法就不能正确选取了,所以要使用方括号表示法。一般情况下都是使用点表示法来访问属性。

Array类型

创建数组也有两种办法,第一种是使用Array构造函数,如:

var person = new Array();var color = new Array(20);    //创建了一个长度为20的数组var fruit = new Array("apple", "banana", "orange");  //包含了三个字符串的数组

创建数组是也可以省略new关键字。第二种办法是用数组字面量的办法,就是一对包含数组项的方括号表示,多个数组项之间用逗号隔开,例如:

var color = ["red", "blue", "black"];var number = [1, 2, 3, 4];var number2 = [1, 2, 3,]   //这样没错但是会创建一个包含3或4项的数组,所以最好不要这样

在读取或者设置数组的值时,可以使用方括号并提供相应的索引值来查找和添加或修改,如:

var color = ["red", "blue", "black"];alert(color[0]);      //显示第一项,redcolor[2] = "brown";   // 修改第三项为browncolor[3] = "yellow";  //在第四项的位置添加了一项

而且在数组中国可以通过length来获得数组的长度,拿上面那一个栗子来说:

alert(color.length) ;   //输出color数组的长度为4,别忘了新加入了yellow//当然,也可以设置length来控制数组长度color.length = 3;       //这样做的结果就是第四项的yellow被移除了alert(color[3]);        //发现输出的竟然是undefined,科科color.length = 5;       //现在有变成长度为5的数组了,不过新增部分的内容全部都是undefined了alert(color[4]);        //undefined

有了这种关系是不是发现在数组后面添加数据变得方便了许多,所以可以这么做:

var color = ["red", "blue", "black"];color[color.length] = "brown";      //color.length=3,在第4位添加了一种颜色color[color.length] = "yellow";     //color.length=4,在第5位添加了一种颜色

对于数组,还有一些其他的操作:

  • 使用instance of 来判断一个对象是不是数组
  • 使用toString() 来将数组拼接成一个以逗号分隔的字符串
  • 使用push() 在数组末尾推入新的元素,使用pop() 弹出末尾元素
  • 使用push()在末尾推入元素,shift() 取出数组第一个元素,unshift() 在数组首位添加元素
  • 以上两种方法的括号内都可以有多个参数,如color.push(“white”, “green”),在末尾加入white和green
  • 使用reverse()反转数组,使用sort()对数组进行排序,默认情况下是按升序排列的,也可以重写排列方法然后作为参数放在sort()中来进行排序
  • 还有更多的操作就不一一详细说明了有:
    • concat() ———— //基于当前数组创建一个新数组
    • slice() ————— //基于当前数组的一个或多个项创建一个新数组
    • splice() ————– //可以插入、删除、替换数组的项,主要是插入项
    • indexOf() ———– //从数组开头查找某个位置的项
    • lastIndexOf()——–//从数组末尾查找某个位置的项
    • every()—————//对数组的每一项运行给定函数,如果每一项都返回true则返回true
    • filter()—————–//对数组的每一项运行给定函数,返回true的项组成的数组
    • foreach()————//对数组的每一项运行给定函数,没有返回值
    • map()—————–//对数组的每一项运行给定函数,返回每次调用的结果组成的数组
    • some()—————//对数组的每一项运行给定函数,如果有一项返回true则返回true
    • reduce()————–//从前往后迭代所有的项,然后返回其结果值
    • reduceRight()——//从后往前迭代所有项,然后返回其结果值,这个和上面那个都可以进行计算数组的和之类的操作,需要一个回调函数,比如:function(prev, cur, index, array)这个是书上的例子

Date 类型

ECMAScript中的Data类型是在早期Java中的java.util.Date的基础上构建的,要构建一个日期对象,使用new操作符和Date构造函数即可:

var date = new Date();

如果想获取到调用这个方法的日期和毫秒数可以使用Date.now(),也可以使用Date.stop()来取得停止的时间。

var now = Date.now();   //取得开始时间/*...doSomething...*/var stop = Date.stop(),    result = stop - start;

Date类型还有专门用于将日期格式转化成字符串的方法,这些方法如下:

  • toDateString()——–以特定的格式显示星期几、月、日、年
  • toTimeString()——–以特定的格式显示时、分、秒和时区
  • toLocalDateString()——–以特定于地区的格式显示星期几、月、日、年
  • toLocalTimeString()——–以特定于地区的格式显示时、分、秒和时区
  • toUTCString()——–以特定的格式完整的显示UTC日期

还有一些操作方法就不一一列举了,如获得日期中的年份、月份、小时、分钟等。

RegExp类型

不太会啊,不写了。

Function 类型

每一个函数都是Function类型的实例,而且和其他引用类型一样具有属性的方法,由于函数是对象,因此函数名也是一个指向函数对象的指针,不会与某一个函数绑定。
ECMAScript中函数是没有重载的,例如:

function add(num) {    return num + 100;}function add(num) {    return num + 55.6;}var result = add(100);          //reulet = 155.6

后面的函数覆盖了前面的函数。
关于函数声明函数表达式,函数声明会被解析器率先读取,所以如下代码没有问题:

alert(sum(10, 10));function sum(num1, num2){    return num1 + num2;}

而函数表达式则必须等到解析器执行到它所在的代码时才会被正真解释运行,所以下面的代码会产生错误:

alert(sum(10, 10));var sum = function(num1, num2){    return num1 + num2;}

函数还有两个非继承而来的方法:apply()call() 。这两个方法的用途是在特定的作用域中调用函数。

基本包装类型

为了便于操作基本类型,ECMAScript还提供了了三个特殊的引用类型:Boolean、Number和String。这些类型和以上其他相似,但是也有与各自基本类型相应的特殊行为。之前有稍微提及就不想再写了(主要是懒…)

单体内置对象

Global对象

全部对象(Global)可以说是最特别的一个对象了,因为你不管从哪个角度看,这个对象都是不存在的,所谓的全局作用域中定义的属性和函数,最终都是它的属性。Global对象还包含一些其他的方法

1、URI编码方法

—– Global 对象的encodeURI() 和 encodeURIComponent() 方法可以对URI(Uniform Resource Identifier, 通用资源表示符)进行编码。encodeURI()主要对整个URI进行编码,encodeURIComponent()对于URI中的某一段。主要区别在于encodeURI()不会对属于URI的特殊字符进行编码,如冒号、问号、井号,encodeURIComponent()会对发现的任何非标准字符进行编码。
—– 与其对应的两个方法分别是:decodeURI() 和 decodeURIComponent(), 其中decodeURI() 只能对encodeURI()替换的字符进行解码,同样的decodeURIComponent()能够解码使用encodeURIComponent() 编码的所有字符串。

2、eval()方法

很强大,但是我没弄懂,不抄了。

3、Global对象的属性

我把书上的拍下来了:
Global对象的属性

4、window对象

ECMAScript虽然没有指出如何访问Global,但Web浏览器都是将这个全局对象作为window对象的一部分来实现的,所以在全局作用域中声明的所有变量和函数都成为了window对象的属性。

Math对象

Math对象保存了数学公式和信息,下面给出一些基本的方法:

—— min() 和 max()
min()和max()用来返回一组数值中的最大值和最小值:

var max = Math.max(1, 3, 4, 7, 2, 5);alert(max);    //7var min = Math.min(1, 3, 4, 7, 2, 5);alert(min);    //1

—— 舍入方法
Math.ceil() 执行向上舍入
Math.floor()执行向下舍入
Math.round()执行标准舍入,他总是将数值四舍五入为最接近的整数

alert(Math.ceil(15.8));     //16alert(Math.ceil(15.5));     //16alert(Math.ceil(15.2));     //16alert(Math.floor(15.8));    //15alert(Math.floor(15.5));    //15alert(Math.floor(15.2));    //15alert(Math.round(15.8));    //16alert(Math.round(15.5));    //16alert(Math.round(15.2));    //15

—–random()方法
Math.random()返回一个大于等于0,小于1的一个随机数,套用下面的公式就可以使用Math.random()获取一个随机数啦:

    值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

例如:

var num = Math.floor(Math.random() * 10 + 1);   //获取一个1-10之间的整数,包括1和10
0 0
原创粉丝点击