web前端之JavaScript高级程序设计二:引用类型

web前端之JavaScript高级程序设计二:引用类型

引用类型的值(对象)是引用类型的一个实例。引用类型是一种数据结构,用于将数据和功能组织在一起。

Object类型:

var person1=new Object();
person1.name="FZW";
person1.age=21;
var person2={
    name:"FZW"
    ,age:21
};

创建Object实例的方法有两种。第一种是使用new操作符后跟Object构造函数;另一种是使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。

var person3={};
person3.name="FZW";
person3.age=21;

使用对象字面量语法时,如果留空其花括号,则可以定义只包含默认属性和方法的对象。

获取对象字面量里面的值:
alert(person[“name”]); //”Nicholas”
alert(person.name); //”Nicholas

Array类型:

创建数组的基本方式有两种。第一种是使用 Array 构造函数:
var colors=new Array();
var colors=new Array(“Greg”);
创建数组的第二种基本方式是使用数组字面量表示法:
var colors = [“red”, “blue”, “green”];
var colors=[];

var colors=["red","blue","green"];
var names=[];
alert(colors.length);
alert(names.length);
colors.length=2;
alert(colors[2]);
colors.length=4;
alert(colors[3]);
colors[colors.length]="black";

数组的 length 属性很有特点——它不是只读的。通过设置colors.length可以从数组的末尾移除项或向数组中添加新项。利用 length 属性也可以方便地在数组末尾添加新项。

检测数组:
Array.isArray(value),用于判断是不是数组。

转换方法:

var colors=["red","yellow","green"];
alert(colors.toLocaleString());
alert(colors.toString());
alert(colors.valueOf());
alert(colors);

所有对象都具有 toLocaleString()、 toString()和 valueOf()方法。其中,调用数组的 toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用 valueOf()返回的还是数组。

重排序方法:
数组中已经存在两个可以直接用来重排序的方法: reverse()和 sort()

function compare(value1,value2){
if(value1 < value2){
        return -1;
    }else if(value1 > value2){
        return 1;
    }else{
        return 0;
    }
}
var values=[1,2,3,4,5,'a','b','c','d','e'];
values.reverse();
alert(values);
values.sort(compare);
alert(values);

Date 类型:

var now=new Date();
alert(now);
var now1=new Date(Date.parse("May 25,2004"));
alert(now1);
var now2 = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
alert(now2);

Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。
Date.UTC()方法同样也返回表示日期的毫秒数,但它与 Date.parse()在构建值时使用不同的信息。 Date.UTC()的参数分别是年份、基于 0 的月份(一月是 0,二月是 1,以此类推)、月中的哪一天(1 到 31)、小时数(0 到 23)、分钟、秒以及毫秒数。

日期格式化方法:
toDateString()——以特定于实现的格式显示星期几、月、日和年;
toTimeString()——以特定于实现的格式显示时、分、秒和时区;
toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;
toLocaleTimeString()——以特定于实现的格式显示时、分、秒;
toUTCString()——以特定于实现的格式完整的 UTC 日期

日期/时间组件方法:
getTime() 返回表示日期的毫秒数;与valueOf()方法返回的值相同
setTime(毫秒) 以毫秒数设置日期,会改变整个日期
getFullYear() 取得4位数的年份(如2007而非仅07)
getUTCFullYear() 返回UTC日期的4位数年份
setFullYear(年) 设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
setUTCFullYear(年) 设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
getMonth() 返回日期中的月份,其中0表示一月, 11表示十二月
getUTCMonth() 返回UTC日期中的月份,其中0表示一月, 11表示十二月
setMonth(月) 设置日期的月份。传入的月份值必须大于0,超过11则增加年份
setUTCMonth(月) 设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份
getDate() 返回日期月份中的天数(1到31)
getUTCDate() 返回UTC日期月份中的天数(1到31)
setDate(日) 设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
setUTCDate(日) 设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
getDay() 返回日期中星期的星期几(其中0表示星期日, 6表示星期六)
getUTCDay() 返回UTC日期中星期的星期几(其中0表示星期日, 6表示星期六)
getHours() 返回日期中的小时数(0到23)
getUTCHours() 返回UTC日期中的小时数(0到23)
setHours(时) 设置日期中的小时数。传入的值超过了23则增加月份中的天数
setUTCHours(时) 设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数
getMinutes() 返回日期中的分钟数(0到59)
getUTCMinutes() 返回UTC日期中的分钟数(0到59)
setMinutes(分) 设置日期中的分钟数。传入的值超过59则增加小时数
setUTCMinutes(分) 设置UTC日期中的分钟数。传入的值超过59则增加小时数
getSeconds() 返回日期中的秒数(0到59)
getUTCSeconds() 返回UTC日期中的秒数(0到59)
setSeconds(秒) 设置日期中的秒数。传入的值超过了59会增加分钟数
setUTCSeconds(秒) 设置UTC日期中的秒数。传入的值超过了59会增加分钟数
getMilliseconds() 返回日期中的毫秒数
getUTCMilliseconds() 返回UTC日期中的毫秒数
setMilliseconds(毫秒) 设置日期中的毫秒数
setUTCMilliseconds(毫秒) 设置UTC日期中的毫秒数
getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化

RegExp 类型:

ECMAScript 通过 RegExp 类型来支持正则表达式。使用下面类似 Perl 的语法,就可以创建一个正则表达式,详情查看

Function 类型:

每个函数都是 Function 类型的实例,而且都与其他引用类型一样具有属性和方法。

var sum = function(num1, num2){
    return num1 + num2;
};
alert(sum(0,10));
var anotherSum=sum;
alert(anotherSum(1,10));
sum=null;
alert(anotherSum(2,10));
alert(sum(3,10));

定义了一个名为 sum()的函数,用于求两个值的和。然后,又声明了变量 anotherSum,并将其设置为与 sum 相等(将 sum 的值赋给 anotherSum)。此时, anotherSum 和 sum 就都指向了同一个函数,因此 anotherSum()也可以被调用并返回结果。即使将 sum 设置为 null,让它与函数“断绝关系”,但仍然可以正常调用anotherSum()。

ECMAScript 中的函数是对象,因此函数也有属性和方法。每个函数都包含两个属性: length 和 prototype:

function sayName(name){
    alert(name);
}
function sum(num1,num2){
    return num1+num2;
}
function sayHi(){
    alert("hi");
}
alert(sayName.length);//1
alert(sum.length);//2
alert(sayHi.length);//0

在 ECMAScript 核心所定义的全部属性中,最耐人寻味的就要数 prototype 属性了。对于ECMAScript 中的引用类型而言, prototype 是保存它们所有实例方法的真正所在。换句话说,诸如toString()和 valueOf()等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访问罢了。在创建自定义引用类型以及实现继承时, prototype 属性的作用是极为重要的,后续我们会讲到。

function sum(num1,num2){
    return num1+num2;
}
function callSum1(num1,num2){
    return sum.apply(this,arguments);//传入arguments对象
}
function callSum2(num1,num2){
    return sum.apply(this,[num1,num2]);//传入数组
}
alert(callSum1(10,10));
alert(callSum2(10,10));

callSum1()在执行 sum()函数时传入了 this 作为 this 值(因为是在全局作用域中调用的,所以传入的就是 window 对象)和 arguments 对象。而 callSum2 同样也调用了sum()函数,但它传入的则是 this 和一个参数数组。这两个函数都会正常执行并返回正确的结果。call()方法与 apply()方法的作用相同,它们的区别仅在于接收参数的方式不同。对于 call()方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用call()方法时,传递给函数的参数必须逐个列举出来,如下面的例子所示:

function sum(num1,num2){
    return num1+num2;
}
function callSum(num1,num2){
    return sum.call(this,num1,num2);
}
alert(callSum(10,10));

Math对象:

Math.E :自然对数的底数,即常量e的值
Math.LN10: 10的自然对数
Math.LN2 :2的自然对数
Math.LOG2E: 以2为底e的对数
Math.LOG10E :以10为底e的对数
Math.PI:π的值
Math.SQRT1_2 :1/2的平方根(即2的平方根的倒数)
Math.SQRT2 :2的平方根
min()和 max()方法
Math.ceil():执行向上舍入,即它总是将数值向上舍入为最接近的整数;
Math.floor():执行向下舍入,即它总是将数值向下舍入为最接近的整数;
Math.round():执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。
random()方法:Math.random()方法返回大于等于 0 小于 1 的一个随机数。
Math.abs(num) 返回num 的绝对值
Math.exp(num) 返回Math.E 的num
Math.log(num) 返回num 的自然对数
Math.pow(num,power) 返回num 的power 次幂
Math.sqrt(num) 返回num 的平方根
Math.acos(x) 返回x 的反余弦值
Math.asin(x) 返回x 的反正弦值
Math.atan(x) 返回x 的反正切值
Math.atan2(y,x) 返回y/x 的反正切值
Math.cos(x) 返回x 的余弦值
Math.sin(x) 返回x 的正弦值
Math.tan(x) 返回x 的正切值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值