什么是属性 什么是方法
对象名.属性值=xx; 对象名.方法名(); 有没有括号就是区别
2. 基本对象:
1. Function:函数(方法)对象
js中function 方法是对象 所以想的是java中对象的创建方法 而不是java中方法的创建方法
1. 创建:
1. var fun = new Function(形式参数列表,方法体); //忘掉吧
2.
function 方法名称(形式参数列表){
方法体
}
3.
var 方法名 = function(形式参数列表){
方法体
}
2. 方法:
3. 方法对象的属性:
length:代表形参的个数
4. 特点:
1. 方法定义是,形参的类型不用写,返回值类型也不写。
2. 方法是一个对象,如果定义名称相同的方法,后面定义的会把前面定义的会覆盖
3. 在JS中,方法的调用只与方法的名称有关,和参数列表无关
4. 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
5. 调用:
方法名称(实际参数列表);
注意这里的arguments对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>function对象</title>
<script>
//Function:函数(方法)对象
/*
1. 创建:
function 方法名称(形式参数列表){
方法体
}
var 方法名 = function(形式参数列表){
方法体
}
2. 方法:
3. 属性:
length:代表形参的个数
4. 特点:
1. 方法定义是,形参的类型不用写,返回值类型也不写。
2. 方法是一个对象,如果定义名称相同的方法,会覆盖
3. 在JS中,方法的调用只与方法的名称有关,和参数列表无关
4. 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
5. 调用:
方法名称(实际参数列表);
*/
function fun2(a, b) { //方法定义时参数列表的参数类型不写因为都是var
alert(a + b);
}
fun2(3,4);//弹出7
alert(fun2.length); //属性:length:代表形参的个数 参数的个数为2 这里弹出2
function fun3(a,b){
alert(a);
}
fun3(1,2); //弹出1
fun3(1);//java中这样写会报错 但是js这里传一个参数也可以正常弹出
function fun4(a,b){
alert(b);
}
fun4(1,2); //弹出2
fun4(1);//没有传参数b 方法体时alert b所以弹出undefined
function fun5(a,b){
alert(a);
}
fun5();//没有传参数 弹出undefined
function fun6(a,b){
alert(a);
alert(b);
}
fun6(1,1,1); //传三个参数也行 弹出 1 1
//求几个数的和
function add(a,b){ //返回值类型也是不用写
return a+b;
}
var sum=add(1,2);
alert(sum);// 弹出3
//求任意个数的和
function add2() { //不定义参数
alert(arguments[0]) //arguments内置对象相当于java中的数组
alert(arguments[1])
}
add2(1,3);// 弹出 1 3
function add3() {
var sum=0;
for (var i=0;i<arguments.length;i++){ //注意数组的[]从0开始到n-1
sum+=arguments[i];
}
return sum
}
var sum=add3(1,2,3);
alert(sum); //弹出6
</script>
</head>
<body>
</body>
</html>
2. Array:数组对象
1. 创建:
1. var arr = new Array(元素列表);
2. var arr = new Array(默认长度); 注意是小括号
3. var arr = [元素列表]; 注意是中括号
2. 方法
join(参数):将数组中的元素按照指定的分隔符拼接为字符串
push() 向数组的末尾添加一个或更多元素,并返回新的长度。注意这里的返回值
3. 数组对象的属性
length:数组的长度
4. 特点:
1. JS中,数组元素的类型可变的。
2. JS中,数组长度可变的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>array对象</title>
<script>
/*
array是数组对象
1. 创建:
1. var arr = new Array(元素列表);
2. var arr = new Array(默认长度);
3. var arr = [元素列表];
2. 方法
join(参数):将数组中的元素按照指定的分隔符拼接为字符串
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
3. 属性
length:数组的长度
4. 特点:
1. JS中,数组元素的类型可变的。
2. JS中,数组长度可变的。
*/
var arr1= new Array(1,2,3);
var arr2=new Array(3); //长度为3 这里要注意不是数组里有一个元素而是数组的长度是3
var arr3=[2,3,4];
var arr4=new Array(); //空数组
document.write(arr1+"<br>");
document.write(arr2+"<br>");//2个逗号 三个长度
document.write(arr3+"<br>");
document.write(arr4+"<br>");
var arr5=new Array(1,"abc",true);
document.write(arr5+"<br>");//1,"abc",true
document.write(arr5[0]+"<br>");//1 看集合中的元素
document.write(arr5[3]+"<br>");//undefined 数组会自动扩容4个元素
document.write(arr5[10]+"<br>");//undefined
arr5[10]="tt";
document.write(arr5+"<br>");//1,abc,true,,,,,,,,tt
document.write(arr5.length+"<br>");//11
document.write(arr5.join()+"<br>");// join(参数):将数组中的元素按照指定的分隔符拼接为字符串 1,abc,true,,,,,,,,tt
document.write(arr5.join("--")+"<br>");//注意这里要加引号 1--abc--true----------------tt
arr5.push(11);//相当于java中的add
document.write(arr5+"<br>");//1,abc,true,,,,,,,,tt,11
</script>
</head>
<body>
</body>
</html>
3. Boolean 是一个基本数据类型的包装类
4. Date:日期对象
1. 创建:
var date = new Date();
2. 方法:
toLocaleString():返回当前date对象对应的时间本地字符串格式
getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>date日期对象</title>
<script>
/*
1. 创建:
var date = new Date();
2. 方法:
toLocaleString():返回当前date对象对应的时间本地字符串格式
getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
*/
var date =new Date();
document.write(date+"<br>");//Thu Dec 02 2021 19:53:16 GMT+0800 (中国标准时间)
document.write(date.toLocaleDateString()+"<br>");//2021/12/2
document.write(date.getTime()+"<br>");//1638446375125 可以作为时间戳使用
</script>
</head>
<body>
</body>
</html>
5. Math:数学对象
1. 创建:
* 特点:Math对象不用创建,直接使用。 Math.方法名();
2. 方法:
random():返回 0 ~ 1 之间的随机数。 含0不含1
ceil(x):对数进行上取整。
floor(x):对数进行下取整。
round(x):把数四舍五入为最接近的整数。
3. 属性:
PI圆周率
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Math数学对象</title>
<script>
/*
java中math是个工具类 直接点来引用
1. 创建:
* 特点:Math对象不用创建,直接使用。 Math.方法名();
2. 方法:
random():返回 0 ~ 1 之间的随机数。 含0不含1
ceil(x):对数进行上舍入。
floor(x):对数进行下舍入。
round(x):把数四舍五入为最接近的整数。
3. 属性:
PI
*/
document.write(Math.PI+"<br>");// 3.141592653589793
document.write(Math.random()+"<br>");//返回 0 ~ 1 之间的随机数。 含0不含1
document.write(Math.round(3.14)+"<br>");//round(x):把数四舍五入为最接近的整数。 3
document.write(Math.ceil(3.14)+"<br>");// ceil(x):对数进行上舍入。 输出4
document.write(Math.floor(3.14)+"<br>");// floor(x):对数进行下舍入。 3
//取1-100之间的随机整数
//1.Math.random();产生随机数,范围(0,1]
//2.乘以100 得到(0,99.99】小数
//3.取整得到【0,99】整数
//4.再+1得到【1,100】整数
document.write("<hr>");
document.write(Math.round(Math.random()*100)+1);
</script>
</head>
<body>
</body>
</html>
6. Number 基本数据类型的包装类
7. String 基本数据类型的包装类
8. RegExp:正则表达式对象
意思是单词字符组成 长度6-12 \w{6,12}
1. 正则表达式RegExp:定义字符串的组成规则。 js对表单的校验依赖于正则表达式
所有语言定义正则表达式都是这样的
1. 单个字符:[]
如: [a] [ab] [a-zA-Z0-9_]
* 特殊符号代表特殊含义的单个字符:
\d:单个数字字符 [0-9] \d就代表【0-9】
\w:单个单词字符[a-zA-Z0-9_] \w:【a-zA-Z0-9_] 注意这里还有下划线_
2. 量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次 例如 \w*表示字符串规则是 ---单词字符出现0次或多次
{m,n}:表示 m<= 数量 <= n : 数量在 m 到n之间 注意这里是个大括号{} 而且有等号
* m如果缺省: {,n}:最多n次 小于等于n
* n如果缺省:{m,} 最少m次 大于等于m
3. 开始结束符号
* ^:开始
* $:结束
2. 正则对象:
1. 创建
1. var reg = new RegExp("正则表达式");
2. var reg = /正则表达式/;
2. 方法
1. test(参数):验证指定的字符串是否符合正则定义的规范 符合true 不符合false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RegExp对象</title>
<script>
/*
RegExp:正则表达式对象
1. 正则表达式:定义字符串的组成规则。
1. 单个字符:[]
如: [a] [ab] [a-zA-Z0-9_]
* 特殊符号代表特殊含义的单个字符:
\d:单个数字字符 [0-9]
\w:单个单词字符[a-zA-Z0-9_]
2. 量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次
例如 \w*表示单词字符出现1次或多次
{m,n}:表示 m<= 数量 <= n
* m如果缺省: {,n}:最多n次
* n如果缺省:{m,} 最少m次
3. 开始结束符号
* ^:开始
* $:结束
2. 正则对象:
1. 创建
1. var reg = new RegExp("正则表达式");
2. var reg = /正则表达式/;
2. 方法
1. test(参数):验证指定的字符串是否符合正则定义的规范
*/
var reg1 = new RegExp("^\\w{6,12}$");//加了^ $意思是该定义的字符串以单词字符开头以单词字符结尾
alert(reg1);// 输出/^\w{6,12}$/
var reg2 = /^\w{6,12}$/;
alert(reg2);//输出 /^\w{6,12}$/
// 1. test(参数):验证指定的字符串是否符合正则定义的规范 符合弹出true 不符合弹出false
var username ="zhangsan";
var flag=reg2.test(username);//判断是否符合reg2的正则表达式规则
alert(flag); //弹出true
var str2 ="zhangsanhhhhhhhhhh";
var flag2=reg2.test(str2);
alert(flag2);//字符串长度不在6-12之间,弹出false
</script>
</head>
<body>
</body>
</html>
注意:
var reg1 = new RegExp("^\\w{6,12}$"); 两根反斜线 因为括号里面是用字符串形式定义的
9. Global
什么叫URL编码 就是我们在做数据传输时 我们是通过一些传输协议的比如http 不支持中文 所以发送到服务器端需要用URL编码
1. 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。
调用方法: 方法名();
2. 方法: 注意这些方法的调用都是encode(参数); isNaN(参数); parseInt(参数);这种形式 要注意看
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码
parseInt():将字符串转为数字 与直接字符串加+ 转数字不同 如果+123ab 输出NaN 但是parseInt输出123 parseInt会逐位判断
* 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN():判断一个值是否是NaN
* NaN六亲不认,连自己都不认。NaN参与的==比较全部问false
eval():讲 JavaScript 字符串,并把它作为脚本代码来执行。
3. URL编码
传智播客 = %E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
每一个字节加一个百分号 这里是utf-8 一个汉字三个字节 四个字12个字节12个%
gbk编码一个汉字两个字节 utf-8编码一个汉字三个字节
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RegExp对象</title>
<script>
/*
Global
1. 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。
调用方法: 方法名();
2. 方法:
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码,解码的字符更多
parseInt():将字符串转为数字
* 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN():判断一个值是否是NaN
为什么要有这个方法而不直接==来比较
* NaN六亲不认,连自己都不认。NaN参与的==比较 全部问false
eval():将 JavaScript 字符串,并把它作为脚本代码来执行。 :
3. URL编码 服务器可能不认中文 所以使用这种url编码
传智播客 = %E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
* BOM
* DOM
*/
var str ="传智播客";
var encode1= encodeURI(str); //这里是方法调用但是不用对象 是因为Global是全局对象
document.write(encode1+"<br>"); //%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 utf-8格式的编码
var decode1 = decodeURI(encode1);
document.write(decode1+"<br>");//传智播客
var str2 ="传智播客";
var encode2=encodeURIComponent(str2);
document.write(encode2+"<br>");//%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 这个方法编码的字符更多
var str3="http://wwww.baidu.com?wd=传智播客"; // encodeURI 和 encodeURIComponent的区别
var encode3=encodeURI(str3);
document.write(encode3+"<br>");//http://wwww.baidu.com?wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
var encode4=encodeURIComponent(str3);
document.write(encode4+"<br>")//http%3A%2F%2Fwwww.baidu.com%3Fwd%3D%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2 注意这里冒号 //都编码了 编码的字符更多一些
// parseInt():将字符串转为数字 * 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
var str4="123";
var number=parseInt(str4);
document.write(number+"<br>") ;//123
var str5="234ab";
var number2=parseInt(str5);
document.write(number2+"<br>") ;//234
var str6="a234ab";
var number3=parseInt(str6);
document.write(number3+"<br>") ;//NaN 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number 注意是不是数字的前端转成数字
//NaN参与的==比较 全部问false
var a ="acb";
document.write(a==NaN+"<br>"); //false
var b ="NaN";
document.write(b==NaN+"<br>");//false
//所以通过方法isNaN();来判断
document.write(isNaN(b)+"<br>"); //true
// eval():将 JavaScript 字符串,并把它作为脚本代码来执行。 :
var jscode="alert(123)"; //可以吧js代码的片段通过eval();方法来解析并当初js代码来执行
eval(jscode); //弹出123 注意这里eval();是直接弹出
</script>
</head>
<body>
</body>
</html>