ECMAScript的基本对象和使用方法
-
Function对象
1.如何创建:
创建方式1:var 方法名 = new Function("形参列表",方法体);
由于这种方式不太符合一般定义函数的逻辑,所以不建议使用,了解一下就好。
<script>
//创建Function对象的方式一
var fun = new Function("val1","val2","alert(val1);");
//调用
fun("hello","javascript")
</script>
运行结果:
创建方式2: function 方法名称(参数列表){
方法体
}
这是比较常用的一种方式。
<script>
//创建Function对象的方式二
function fun(val1, val2){
alert(val1 + val2);
}
//调用
fun("Hello","JavaScript");
</script>
运行结果:
创建方式三: var 方法名 = function(参数列表){
方法体
}
对比第二种方式相当于把方法名提前,用法一致。
2.有哪些自带方法:
3.有哪些属性:
①length:方法接收参数的个数;
<script>
function fun (a,b,c){
}
document.write(fun.length);//将参数个数打印在页面上
</script>
运行结果:
4.特点:
①:方法定义时,形参的类型(var)和方法的返回值类型(var)可以不用写。
②:方法是一个对象,如果定义名称相同的方法,不会像其他有些语言一样会报错,而是会覆盖前面先定义的同名方法。
③:在JS中,方法的调用只与方法的名称有关,和参数列表无关,也就是说调用的时候不必严格按照方法原来所期待要传 的参数。可以少传、多传、或者一个都不传。
④:在方法声明中有一个隐藏的内置的对象(本质是个数组)arguements,接收了所有的实际参数。例如现在我们要编写一 个方法,能计算任意个数的和。
<script>
//求任意个数的和
function add() {
var sum = 0;
for (var i = 0; i < arguments.length; i++){
sum += arguments[i];
}
return sum;
}
//调用
document.write(add(1,2,3) + "<br>");
document.write(add(7,8,9,10,11,12));
</script>
运行结果:
5.如何调用:函数名(参数列表);
-
Array
1.创建
①:var 数组名 = new Array(元素列表);
②:var 数组名 = new Array(默认长度);
③:var 数组名 = [元素列表];
<script>
//创建方式1
var arr1 = new Array([1,2,3]);
//创建方式2
var arr2 = new Array(3);
//创建方式3
var arr3 = [4,5,6];
document.write(arr1 + "<br>");
document.write(arr2 + "<br>");
document.write(arr3 + "<br>");
</script>
运行结果:
2.特点
①:js中,数组元素的类型的可变的。可以放不同类型的数据。
②:和其他大部分语言一样也可以通过下标来访问元素。
③:在js中数组的长度是可变的。访问时如果数组下标越界会自动扩容。且访问到的值是undefined类型。
var arr4 = ['a',123,true,undefined,null];
3.属性
length: 数组的长度。
4.常用方法
join(): 将数组中的元素按照指定的分隔符拼接为字符串。
var arr = new Array(1,"abc","计算机","python");
var str = arr.join("--分--隔--符--");
document.write(arr + "<br>");
document.write(str);
运行结果:
push(): 往数组的末尾添加一个或更多元素,并返回新的长度。
var arr = [1,2,3,4];
document.write("arr中共有" + arr.length + "个元素,它们是:" + arr + "<br>");
arr.push(5);
document.write("arr中共有" + arr.length + "个元素,它们是:" + arr + "<br>");
arr.push(6,7,8,9,10);
document.write("arr中共有" + arr.length + "个元素,它们是:" + arr + "<br>");
运行结果:
toString(): 把数组转换为数组值(逗号分隔)的字符串。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.toString());
运行结果:
-
Boolean (ture or false,不再记录)
-
Date
1.创建
var 对象名 = new Date();
<script>
//Date对象的创建
var date = new Date();
document.write(date);
</script>
运行结果:
2.常用方法
toLocaleString(): 根据本地时间格式,把Date对象转换为字符串。
<script>
//Date对象的创建
var date = new Date();
//转换为本地时间格式
var dateStr = date.toLocaleString();
document.write(dateStr);
</script>
运行结果:
getTime(): 返回1970年1月1日至今的毫秒数。在后面用于当做时间戳。
-
Math
1.创建 Math对象不用创建可以直接使用,Math.方法名();
2.常用方法
random():返回0~1之间的随机数(包含0不包含1)。
ceil(x): 对数进向上舍入(向上取整)。
floor(x): 对数进向下舍入(向下取整)。
round(): 把数四舍五入为最接近的整数。
<script>
document.write(Math.random() + "<br>"); //产生0~1之间的随机数
document.write(Math.ceil(3.14) + "<br>"); //向上取整
document.write(Math.floor(3.14) + "<br>"); //向下取整
document.write(Math.round(3.14) + "<br>"); //四舍五入
document.write(Math.round(3.50) + "<br>");
</script>
运行结果:
小练习:根据以上方法求取1~100之间的随机整数。
for (var i = 0; i < 10; i ++){
document.write(Math.floor((Math.random() * 100)) + 1) ;
document.write("<br>");
}
运行结果:
3.属性
-
Number
-
String
-
RegExp :正则表达式对象
正则表达式:定义字符串的组成规则。
1.单个字符:[ ],如[a] [ab] [a-z] 只取其中一个字符。
特殊符号代表特殊含义的单个字符:
\d:单个数字字符[0-9]
\w:单个单词字符[a-zA-Z0-9_]
2.量词符号:
?:表示出现0次或1次
*:表示出现0次或n次
+:表示出现1次或n次
{m,n}:至少出现m次,最多出现n次。m如果缺省,表示最多出现n次,n如果缺省表示最少出现m次。
3.开始/结束符号
^:开始符号
$ : 结束符号
正则对象
1.创建
①var 对象名 = new RegExp("正则表达式");
②var 对象名 = /正则表达式/;
<script>
//1.第一种创建方式
var reg1 = new RegExp("\\d{9,16}");//9-16位的数字
//2.第二种创建方式
var reg2 = /\w*/; //单词字符出现n次
var reg3 = /^_\w{6,8}\d$/; //以下划线开头中间6-8个字符以一个数字结尾
document.write(reg1 + "<br>");
document.write(reg2 + "<br>");
document.write(reg3 + "<br>");
</script>
运行结果:
2.常用方法
test(str) : 验证指定的字符串是否符合正则定义的规则。符合返回true,不符合返回false。
<script>
//1.第一种创建方式
var reg1 = new RegExp("\\d{9,16}");//9-16位的数字
//2.第二种创建方式
var reg2 = /\w*/; //单词字符出现n次
var reg3 = /^_\w{6,8}\d$/; //以下划线开头中间6-8个字符以一个数字结尾
var str1 = "argdadra";
document.write(reg1.test(str1) + "<br>");
document.write(reg2.test(str1) + "<br>");
var str2 = "_abcdef666";
document.write(reg3.test(str2) + "<br>");
</script>
运行结果:
-
Global(全局对象)
特点:这个对象封装的方法不需要对象就可以直接调用, 方法名();
常用方法:
encodeURI(): url编码。
decodeURI(): url解码。
encodeURIComponent(): url编码。编码的字符更多,与encodeURI用法一致。
decodeURIComponent(): url解码。编码的字符更多,与decodeURI用法一致。
<script>
var str1 = "https://www.baidu.com?wd=秦时明月";
var encode1 = encodeURI(str1);
document.write(encode1 + "<br>");
var s1 = decodeURI(encode1);
document.write(s1 + "<br>");
</script>
运行结果: