JavaScript 高级程序设计第五章阅读

181 阅读5分钟

Date对象

1、创建一个新的对象

let newDate=new Date();

2、初始化一个新的对象赋值

let newDate2=new Date(1997,05,07); //注意,此处的月份从0开始计数,大于11则取余

Date对象方法

重写了toLocaleString()、toString()、valueOf()方法

	let dt=new Date();	
	console.log(dt.toLocaleString());		//2021/3/17 下午3:19:54
	console.log(dt.toDateString());			//Wed Mar 17 2021
	console.log(dt.toLocaleTimeString());	//下午3:19:54
	console.log(dt.toString());				//Wed Mar 17 2021 15:19:54 GMT+0800 (中国标准时间)
	console.log(dt.valueOf());				//1615965903689		返回的是毫秒数

RegExp正则表达式暂时跳过


三种数据类型 String、Boolean、Number

Boolean类型

boolean 类型就true和false,没了。

	console.log(1==2);	//返回false
	console.log(1==1);	//返回true

Number类型

对象方法toString()

	let num=10;
	num.toString();		//返回10
	num.toString(2);	//返回1010
	num.toString(8);	//返回12
	num.toString(16);	//返回‘a’

对象方法toFixed()

	num.tofixed(2);		//四舍五入返回小数点为2的数

ES6类方法isInteger

	console.log(Number.isInteger(1));	//返回true

String类型

length属性

	let str="String";
	console.log(str.lenth);			//返回6

charAt对象方法

	let str="String";
	console.log(str.charAt(2));		//返回字符 ‘i’
	console.log(str[2]);		//返回字符‘i’  但是不推荐这样直接访问字符,

注意: 在JS和C#中 string类型定义的变量都是可通过字符数组的方式进行读,但是都不能写!

Sample:逆置字符串

	let str=new String("String");
	let rts=str.split('').reverse().join('');	//先将字符串分割为字符数组,然后转置字符数组,最后数组转换为字符串
	console.log(rts);

字符串操作方法

对象方法slice()、substr()、substring()

三个对象方法都能从字符串中提取子串,但是substr() 舍去不用了

subString(startIndex,endIndex);

	let str="String";
	console.log(str.slice(0,3));		//返回Str
	console.log(str.slice(3));			//返回ing
	consle.log(str.subString(0,3));		//返回Str
	consle.log(str.subString(3,0));		//返回Str
	consle.log(str.subString(3));		//返回ing

字符串位置方法,对象方法indexOf()、lastIndexOf()

	let str="StringStr";
	console.log(str.indexof("Str"));		//返回 0
	console.log(str.lastIndexOf("Str"));	//返回 6

字符串包含对象方法startsWith()、endsWith()、includes()

startsWith("子串",开始搜索位置) 方法,用于判断子串是否为另一个串的开头,返回true或者fasle

	let str="String";
	console.log(str.startsWith("Str"));		//返回true
	console.log(str.startsWith("Str",1));	//返回的false,第二个参数表示开始匹配子串的位置

endsWith() 方法,用于判断子串是否为另一串的结尾

	let str="String";
	console.log(str.endsWith("ing"));	//返回true

includes()方法,用于判断子串是否包含在字符串中,存在返回

	let str="String";
	console.log(str.includes("Str"));	//返回true
	console.log(str.includes("Str",1));	//返回false,第二个参数为匹配的位置

字符对象方法 trim()

trim() 方法是用于删除字符串前和字符串后所有的空格符

	let str="   String   ";
	console.log(str);			//返回的是   String   
	console.log(str.trim());	//返回String

字符对象方法 repeat() 返回字符串

	let str="Sting";
	let st=str.repeat(3);		//返回 StringStringString
	let stt="ing".repeat(3);	//返回 inginging

字符对象方法 padStart() & padEnd() 方法返回字符串

padStart(Number)方法会复制,Number是返回的字符串的长度,不够就直接用空格填充 padEnd(Number)方法则是从右边开始填充

	let str="String";
	let s=str.padStart(10,'*');		//返回****String
	let a=str.padEnd(10,"?");		//返回String????
	let q=str.padStart(2);			//返回String

字符串的迭代与解析 iterator方法(跳过)

要理解iterator方法,首先得理解Arguments对象,Arguments对象是一个类似于数组,里面存放函数的实参 记住用 for of 迭代就行了

	let str="String";
	for(let i of str){
		console.log(i);		//输出 S t r i n g
	}

字符大小写转换的对象方法 toUpperCase & toLocaleUpperCase() & toUpperCase() &toLowerCase

toUpperCase 调用的变量会被强制转换为字符串类型的大写形式

	let str="String";
	console.log(str.toUpperCase());		//返回STRING

toLowerCase 调用的变量会被强制转换为字符串类型的小写形式

	let str="String";
	console.log(str.toLowerCase());		//返回string

toLocaleUpperCase('en-US')根据本机语言环境转换为相应的大写字符串

	let str="String";
	console.log(str.toLocaleUpperCase('en-US'));	//转换为美式英语大写 STRING

toLocaleLowerCase('en-US')根据本机语言环境转为相应的小写字符串

	let str="String";
	console.log(str.toLocaleLowerCase('en-US'));	//转换为没事英语小写 string

字符串匹配对象方法 match() 方法

match()方法可以接收一个正则表达式的字符串,还可以接收一个RegExp对象

localeCompare()对象方法

localeCompare() 以ASCII码形式对字符串进行比较

	let str="String";
	let stt="Abcdefg";
	console.log(str.localeCompare(stt));	//返回 1
	console.log(str.localeCompare(str));	//返回 0
	console.log(stt.localeCompare(str));	//返回-1


单列列值对象Global\Math

isNaN()、isFinite()、parseInt()和parseFloat都是Global的方法

URL编码方法encodeURI

encodeURI(uri); //uri,一个完整的uri,返回一个新的字符串,表示字符编码统一的标识符

	let url="https://baidu.com";
	console.log(encodeURI(url));	//返回 https://baidu.com
	//这个方法主要用在ajax上,看起来像是无用的

URL编码方法encodeURIComponent()

	let url="https://baidu.com?`~·";	//返回 https%3A%2F%2Fbaidu.com%3F%60~%C2%B7

encodeURIComponent()不会对非ASCII的字符进行编码

eval()方法!重点!

eval(string)会将传入的字符串当作代码来执行

	function func(a,b,c){
		return a+b+c;
	}
	let str="func(100,200,300);";
	console.log(eval(str));				//这里返回600,执行了func()函数

通过eval()定义的任何变量和函数都不会被提升,解析代码时仍然被包围在字符串中,只有在eval()执行的时候才会被创建 在严格模式下,eval()内部创建的变量和函数,外部无法访问,同样的,赋值给eval也会报错

Gobal对象的属性

属性包括undefined、NaN、Infinity、Object、Array、Function、Boolean、String等


window对象

ECMA-262中没有规定直接访问Global对象的方式,但是window对象可以看作是Global对象的代理。因此全局作用域中所有声明的变量和函数都是window的属性

	let str="String";
	function func(a,b,c){
		return a+b+c;
	}
	console.log(window.func(1,2,3));		//返回6
	console.log(window.str);			//返回 String

Math类

Math类属性

	console.log(Math.E);		//返回 e 值
	Math.LN10				//	ln(10)
	Math.LN2				// 	ln(2)
	Math.PI					//	返回 Π 3.1415926
	Math.SQRT1_2			//	返回根号 1/2
	Math.SQRT2				//	返回根号2

类方法 max()和min()方法

max()方法和min()方法,主要用于求一组数值中最大值和最小值

	console.log(Math.min(1,3,5,7,9));	//返回 1
	console.log(Math.max(1,3,5,7,9));	//返回 9

类方法ceil()、floor、round、fround、

	console.log(Math.ceil(25.5));		//始终向上取舍 返回 26
	console.log(Math.floor(25.5));		//向下取舍 返回25
	console.log(Math.round(25.5));		//四舍五入、返回26
	console.log(Math.fround(25.5));		//用单精度浮点型表示、返回25.899999618530273

类方法random()

random 方法是获取0-1之间的一个随机数 16位小数

	let num=Math.random();	//返回了0.9168008932408351

其它类方法

Math.abs(x) 求绝对值、Math.pow() 求平方 、Math.sin()求sin等