JS学习记录(3) 函数内部以及正则表达式(2021-10-17)

一、函数内部

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高级程序设计(第四版)

猜你喜欢

转载自blog.csdn.net/ariarko/article/details/120812247