一、函数内部
1.1this和arguments
在ECMAScript 5中,函数内部存在两个特殊的对象: arguments和this。ECMAScript
6又新增了new.target属性。
(详见JS高级程序设计第四版p299-301)
函数的上下文对象: this
封装实参的对象: arguments
1.2 this指向
以函数形式调用时,this永远都是window。
以方法的形式调用时,this是调用方法的对象。
以构造函数的形式调用时,this是新创建的那个对象。
使用call和apply调用时,this是传入的那个指定对象。
1.3 arguments
arguments对象是一个类数组对象,包含调用函数时传入的所有参数。
这个对象只有以function关键字定义函数时才会有。虽然主要用于包含函数参数,但arguments对象其实还有一个callee属性,是一个指向arguments对象所在函数的指针
//argument参数
function fun(a,b){
//通过下标获取第一个参数
console.log(arguments[0]);
//通过下标获取第一个参数
console.log(arguments[1]);
//获取实参的个数
console.log(arguments.length);
//看看它的函数对象
console.log(arguments.callee);
console.log(arguments.callee == fun);
}
fun("Hello","World");
/*
Hello
World
2
[Function: fun]
true
*/
二、正则表达式
2.1 分析
//去除掉字符串中的前后的空格
var str = " hello child "
var reg = /^\s*|\s*$/g;
///^(在前)\s(空格)*(0或多个)|(或者)\s*$(在后)/g
console.log(str);
str = str.replace(reg, "");
console.log(str);
2.2 注意
// 检查手机号
var phoneStr = "15131494600";
var phoneReg = /^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));
//若结尾无$,无法检查后面还有别的字符的情况
/*
var phoneReg = /^1[3-9][0-9]{9}/;
eg:15131494600www (true)
*/
三、参考:
JavaScript 和 HTML DOM 参考手册
学习JavaScripts
JS高级程序设计(第四版)