第五章 引用类型
1、使用new操作符和Date构造函数创建日期对象。
2、创建特定日期有两个方法——Date.parse()和Date.UTC()。后者小时数为0时显示时间是8点,应该是因为本地是东八区。
3、使用Date.now()方法可以分析代码的运行时间。代码开头使用一次,结束使用一次,然后两次相减得到运行的毫秒数。
4、在不支持Date.now()的浏览器中,使用var start=+new Date();可达到同样的目的。
5、可以直接用比较操作符比较日期的大小。
6、使用构造函数来定义正则表达式,需要对元字符双重转义。
7、函数是对象,函数名是指针。
8、解析器会先读取函数声明,使其在任何代码之前可用。
9、函数内部有两个特殊的对象,arguments和this。
10、arguments的用途是保存函数参数,这个对象有个名叫callee的属性,该属性是个指针,指向拥有这个arguments对象的函数。可用于在递归时接触函数体内代码与函数名的耦合状态。
11、this引用的是函数据以执行的环境对象。
12、ES5的另一个函数对象属性——caller,保存着调用当前函数的函数的引用。
13、每个函数都包含两个属性:length和prototype。length属性表示函数希望接收的命名参数的个数。
14、每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。
15、apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组(可以是Array实例,也可以是arguments对象)。call()与apply()作用相同,但是传递给函数的参数必须逐个列举出来。
16、传递参数并非apply()和call()的真正用武之地,他们强大的地方在于能够扩充函数赖以运行的作用域。P117。用他们扩充作用域的好处是对象不需要与方法有任何耦合关系。
17、ES5还定义了一个方法:bind()。这个方法创建一个函数的实例,其this值会被绑定到传给bind()函数的值。如var objectSayColor=sayColor.bind(o);在这里,sayColor()调用bind()并传入对象o,创建了objectSayColor()函数,它的this值等于o。
18、Number类型中将数值格式化为字符串的方法——toFixed()、toExpoential()、toPrecision()。前两个接收数值表示小数的位数,第三个接收数值表示总位数。
19、字符串方法——slice()、substr()、substring()的异同以及对负的参数的处理方法见P124。
20、trim()方法创建一个字符串的副本,删除前置和后缀的所有空格。
21、字符串的match()方法接收一个正则表达式或者RegExp对象,与调用RegExp的exec()方法相同。
22、eval()方法能够解析代码字符串,谨慎使用。
23、找到数组中的最大或最小值,可以使用apply()方法。
var values=[1,2,3,4,5,6,7,8];
var max=Math.max.apply(Math,values);
24、随机返回一个范围内的整数
function selectFrom(lowerValue,upperValue){
var choices=upperValue-lowerValue+1;
return Math.floor(Math.random()*choices+lowerValue);
} var num=selectFrom(2,10);
//介于2到10之间的一个随机数值
25、三种基本的包装类型——Boolean、Number、String。特征:1、每个包装类型都映射到同名的基本类型。2、在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,方便了数据的操作。3、操作基本类型值得语句一经执行完毕,就会立即销毁新创建的包装对象。