JavaScript - 内置对象

目录

一、Number

1、常用数字

2、常用进制

3、NaN

4、常用常量

5、实例方法

二、Data时间

1、创建时间对象

2、Date 对象属性

3、常用方法

4、常见格式时间

三、String字符串

1、常见字符串

2、字符串属性

3、常用方法

四、Array数组

1、数组对象

2、常用属性

3、常用方法

4、增删改方法

5、回调函数方法

- 面对对象简单回调

- filter 指定过滤

- every 全部满足 some 部分满足

- reduce 累乘

- sort 排序

五、Math

1、常用常量

2、常用方法

- 封装函数实现指定范围内的随机数

六、正则

1、语法

2、修饰符

3、正则方法

4、字符串方法


一、Number

Number 对象是原始数值的包装对象。

Number 创建方式 new Number()。

1、常用数字

//整数:10
console.log(10);

//小数:3.14
console.log(3.14);

//科学计数法:1e5 | 1e-5
console.log(1e5);
console.log(1e-5);

//正负无穷:Infinity | -Infinity
console.log(Infinity);
console.log(-5/0);

2、常用进制

//二进制:0b1010 
var a = 0b1010;  // 8421

//八进制:0o12 
var b = 012;

//十进制:10 
var c = 10;

//十六进制:0xA
var d = 0xA;

console.log(a, b, c, d);

3、NaN

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。

可以把 Number 对象设置为该值,来指示其不是数字值。

提示: 请使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

4、常用常量

//最大值:MAX_VALUE(1.7976931348623157e+308)
console.log(Number.MAX_VALUE);  // >>>1.7976931348623157e+308

//最小值:MIN_VALUE(5e-324)
console.log(Number.MIN_VALUE);  // >>>5e-324

//正负无穷:NEGATIVE_INFINITY | POSITIVE_INFINITY(Infinity | -Infinity)
console.log(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); 
// >>> -Infinity Infinity


//超界数及其运算存在不精准
console.log(999999999999998);
console.log(9999999999999989); // 9999999999999988
console.log(3.1 + 3.2);  // 6.300000000000001

//可以用,分割来显示两个数
console.log(3.1, 3.2);

5、实例方法

  • toExponential(n) :把对象的值转换为指数计数法。
  • toFixed(n):把数字转换为字符串,结果的小数点后有指定位数的数字。
  • toPrecision(n):把数字格式化为指定的长度。
  • toString():把数字转换为字符串,使用指定的进制。

      .toString(2),.toString(6),.toString(8),.toString(16) ,默认:.toString(10) 
    注意:常数的转换进制必须为 10..toString(),即中间存在两个点
  • valueOf():返回一个 Number 对象的基本数字值。

注意:bug数字13.145符合五舍六入。

//toExponential(n)
//3.14.toExponential(1) => 1.3e+1 (先科学记数,再确定精度,n为小数精度)
console.log(13.145.toExponential(3));
// 13.14 => 1.314e+1 => 1.31e+1 (13.15=>1.32e+1)   通常为四舍五入

//toFixed(n) 
//3.14.toFixed(1) => 3.1 (先确定精度,再普通记数,n为小数精度)
console.log(3.14.toFixed(1))  // 3.14四舍五入保留一位小数

//toPrecision(n)
//13.14.toPrecision(1|2) => 1e+1|13 (先确定精度,再记数,n为位数进度)
console.log(13.14.toPrecision(1))  // 1e+1
console.log(13.14.toPrecision(2))  // 13
console.log(13.14.toPrecision(3))  // 13.1
console.log(156.14.toPrecision(1))  // 2e+2

//toString() 
var num = 10;
console.log(num.toString());  //10
console.log(10..toString(8));  //12

二、Data时间

1、创建时间对象

  • new Date(); :最常用
  • new Date(milliseconds);: 给予自定时间戳,毫秒单位
  • new Date(dateString);:给予自定时间
  • new Date(year, month, day, hours, minutes, seconds, milliseconds);

    参数说明:
      year的值为:想设定的年份-1900。
              例如:需设定的年份是1997则year的值应为97。所以Date中可设定的年份最小为1900;

      month:值域为0~11,0代表1月,11表代表12月;

      date:值域在1~31之间;

      hours:值域在0~23之间。
               从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;

      min和sec:值域在0~59之间。
          例 Date day=new Date(11,3,4); 》》 day中的时间为:04-Apr-11 12:00:00 AM


       另:bug时间 1910年2月30日,它将被解释成3月2日。
       Date day=new Date(10,1,30,10,12,34);

var d = new Date(); //最常用
// >>>Date 2018-10-17T11:02:09.556Z

// var d1 = new Date(milliseconds); 给予自定时间戳,毫秒单位
var d1 = new Date(11111111);

// var d2 = new Date(dateString); 给予自定时间
var d2 = new Date("2018/1/1");
var d2 = new Date(2018,1,1");

// var d3 = new Date(year, month, day, hours, minutes, seconds, milliseconds);
var d3 = new Date(118,9,17,19,27,34);

2、Date 对象属性

属性 描述
constructor 返回对创建此对象的 Date 函数的引用。
prototype 使您有能力向对象添加属性和方法。

 

3、常用方法

  • date.getFullYear() :从 Date 对象以四位数字返回年份。例:2018
  • date.getMonth() + 1:从 Date 对象返回月份 (0 ~ 11)。获取准确月份必须+1
  • date.getDate():从 Date 对象返回一个月中的某一天 (1 ~ 31)
  • date.getDay():从 Date 对象返回一周中的某一天 (0 ~ 6)。0-周日
  • date.getHours() :返回 Date 对象的小时 (0 ~ 23)
  • date.getMinutes() :返回 Date 对象的分钟 (0 ~ 59)
  • date.getSeconds() :返回 Date 对象的秒数 (0 ~ 59)
  • date.getMilliseconds():返回 Date 对象的毫秒(0 ~ 999)
  • date.getTime():返回 1970 年 1 月 1 日至今的毫秒数。即,时间戳
  • 其余对象方法查找

4、常见格式时间

  • getUTCFullYear():根据世界时从 Date 对象返回四位数的年份
  • getUTCDate():根据世界时从 Date 对象返回月中的一天 (1 ~ 31)
  • getUTCHours():根据世界时返回 Date 对象的小时 (0 ~ 23)
  • ……

三、String字符串

1、常见字符串

'string' | "string" | 'my name is "zero"' | "I'm boy" | "I \"love\" you"

2、字符串属性

属性 描述
constructor 对创建该对象的函数的引用
length 字符串的长度(常用)
prototype 允许您向对象添加属性和方法

 

3、常用方法

  • chartAt(n):返回在指定索引位置的字符。同[n]
  • concat(str):连接两个或更多字符串,并返回新的字符串。
  • indexOf(str):返回查找的字符串值在字符串中首次出现的位置
  • lastIndexOf(str):从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置
  • replace(re, str):在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串
  • substr(n, m):从起始索引号(n)提取字符串中指定数目(m)的字符。 
  • substring(n, m):提取字符串中两个指定的索引号之间(n,m)的字符。(m省略代表截取到最后)
  • slice(n, m):提取字符串的片断,并在新的字符串中返回被提取的部分。同substring(n, m)
  • split(re):以指定正则(re)将字符串拆分为数组
  • toUpperCase():转换为大写
  • toLowerCase():转换为小写 trim():去除首尾空白字符
  • 其余方法查询
// '' | "" | "''" | '""' | "\"\"" | '\'\''
var str = '字符串';
console.log(str); // >>字符串

// length
console.log(str.length); //>>> 3

// 方法
str = "abc123hello123GOOD123嘿嘿";

// 自定索引下的字符
console.log(str.charAt(1)); //>>> b
console.log(str[1]);//>>> b

// 拼接,返回拼接后的字符串
var newStr = str.concat(123);
console.log(str,'\n', newStr);
//>>>abc123hello123GOOD123嘿嘿 
 abc123hello123GOOD123嘿嘿123

// indexOf(str):指定字符串第一次出现的位置
console.log(str.indexOf("123"));  // 3

// replace(re, str):将正则匹配到的字符串替换为指定字符串
newStr = str.replace("hello", "world");
console.log(str, newStr);  //>>>abc123hello123GOOD123嘿嘿 abc123world123GOOD123嘿嘿

// substr(n, m):从索引n开始,截取m个字符长度(m省略代表截取到最后)
// 索引3开始,截取3个字符长度
newStr = str.substr(3, 3);
console.log(newStr);  //>>>123

// slice(n, m):同substring(n, m)
// 索引3开始,6结束(不包含6) [3, 6)
newStr = str.slice(3, 6);
console.log(newStr);   //>>>123

// split(re, n):以指定正则将字符串拆分为数组, n可选为截取后得到的数组最大长度
var arr = str.split("123", 2);
console.log(arr);  //>>Array [ "abc", "hello" ]
// trim():去除首尾空白字符
str = "   123  abc   "
console.log(str.trim()); //>>>123  abc

四、Array数组

1、数组对象

var cars = ["Saab", "Volvo", "BMW"];

2、常用属性

属性 描述
constructor 返回创建数组对象的原型函数。
length 设置或返回数组元素的个数。
prototype 允许你向数组对象添加属性或方法。

3、常用方法

  • concat(array2,array3,...,arrayX):连接两个或更多的数组,并返回结果。
  • indexOf(ele):指定元素第一次出现的位置
  • lastIndexOf(ele):指定元素最一次出现的位置 ,在一个字符串中的指定位置从后向前搜索。
  • reverse():反转数组的元素顺序。
  • includes(ele, n):从索引n开始往后,元素ele是否在数组中,做全等匹配,索引从头开始n可以省略(in只做值匹配)
  • fill(ele):以指定元素填充整个数组
  • slice(n, m):从索引n开始,截取到索引m(m省略代表截取到最后)
  • join(str):以指定字符串连接成字符串
  • 查找其他方法
// 数组的定义与取值,索引从0开始
var arr = [1, 2, 3];
console.log(arr);
console.log(arr[1]);
//Array(3) [ 1, 2, 3 ]
//2


arr = ['1', '2', '3'];
console.log(arr);
//Array(3) [ "1", "2", "3" ]

arr = ["1", true, [{key: "value"}]]
console.log(arr);
console.log(arr[2][0].key);
//Array(3) [ (1) […], true, "1" ]
//value


// length
console.log(arr.length);  // 3


// 常用方法
// concat(arr):将目标数组拼接到指定数组之后
console.log([1, 2, 3].concat(["4", "5", "6"]));  
// 结果是新数组 Array(6) [ 1, 2, 3, "4", "5", "6" ]

// indexOf(ele):指定元素第一次出现的位置
// lastIndexOf(ele):指定元素最一次出现的位置
console.log(arr.indexOf(true));  // 1

// reverse():反转数组
console.log(arr.reverse()); 
// 反转的到新数组 Array(3) [ (1) […], true, "1" ]

// includes(ele, n)
arr = [1, "1", "2"];
console.log(1 in arr);    //true
console.log(arr.includes(1, 1));  //false
// 只匹配数字1,从索引1开始


// fill(ele):以指定元素填充整个数组
arr.fill(null);
console.log(arr);  // Array(3) [ null, null, null ]
// 操作原数组,一般用来清空数组中的数据(不操作长度)

// slice(n, m):从索引n开始,截取到索引m(m省略代表截取到最后)
arr = [1, 2, 3, 4, 5];
console.log(arr.slice(1, 3));  // 索引[1, 3) >> Array [ 2, 3 ]

// join(str):以指定字符串连接成字符串
var str = arr.join("@");
console.log(str); // 1@2@3@4@5

4、增删改方法

  • push(ele):从尾加   ; unshift(ele):从头加
  • pop():从尾删 ;  shift():从头删
  • splice(begin, length, ...eles):完成增删改
        begin开始索引, length长度, 新元素们(可以省略)
// 增删改操作方法: 操作的都是原数组
// push() 尾加 | unshift() 头加
// pop() 尾删 | shift() 头删
arr.push(6)
console.log(arr);
arr.unshift(0);
console.log(arr);
// 一次操作一个元素
arr.pop();
arr.shift();
console.log(arr);

// splice方法
// begin开始索引
// length长度
// 新元素们(可以省略)

// 1, 2, 3, 4, 5
// 从头加
arr.splice(0, 0, 0);  // 从索引0前方开始操作,操作原数组0个长度,结果多了个元素0
console.log(arr);
// 0, 1, 2, 3, 4, 5

// 从尾加
arr.splice(arr.length, 0, 6);
console.log(arr);
// 0, 1, 2, 3, 4, 5, 6

// 从头删
arr.splice(0, 1) // 从索引0开始,操作原数组一位,替换的新值省略代表删除
console.log(arr);
// 1, 2, 3, 4, 5, 6

// 从尾删
arr.splice(arr.length - 1, 1)
console.log(arr);
// 1, 2, 3, 4, 5

// 替换
arr.splice(2, 1, "3", [0, 0], "3");  // 从索引2开始,用"3", [0, 0], "3"替换掉1位
console.log(arr);

// 1, 2, "3", [0, 0], "3", 4, 5

5、回调函数方法

  • filter(function(value, index){ return true | false}):过滤器
  • every(function(value, index){ return 条件表达式; }):全部满足条件
  • some(function(value, index){ return 条件表达式; }):部分满足条件
  • reduce(function(prev,value,index){ return prev * value; }):累积
  • sort(function(o, n){ return o > n }):正逆向排序

- 面对对象简单回调

// 做网络请求的对象
var web = {
	// 初始化接受的数据属性
	receive: null,
	// 请求数据方法
	send: function () {
		console.log("开始请求数据...");

		// 利用时间戳实现等待一秒
		var b_time = new Date().getTime();  // 开始计数
		var e_time = new Date().getTime();  // 结束计数
		while(e_time - b_time < 1000) {
			// console.log(11);
			e_time = new Date().getTime(); //循环判断,更新结束的计数
		}
		//模拟获取的数据
		var data = [1, 2, 3, 4, 5];
		console.log("数据请求完毕...");

		// 回调 如果获取receive的数据,并且获取请求的数据
		if (web.receive && data) {
			web.receive(data);
		}
	}
}

// web.send();
// console.log(new Date().getTime());

// 如果获取数据后的操作
//用于内部的receive回调,此时receive不为空
web.receive = function(data) {
	console.log(data);
}
// 可以请求数据了
web.send();

- filter 指定过滤

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

// 过滤器回调函数的执行次数 = 被过滤数组的元素个数
	// 需要回调的函数
    var arr = [4, 6, 2, 1, 5, 3];
	var getResult = function (v, i) {
		if (v < 5) {
			return true;
		}
	}
	var newArr = arr.filter(getResult); // 返回值: true | false

	console.log(arr);  //Array(4) [ 4, 2, 1, 3 ]
	console.log(newArr); //false

- every 全部满足 some 部分满足

// 全部满足: every

// 参数: 值, 索引, 所属数组
// true:所有元素都满足条件
// false:有一个不满足条件即可

var arr = [4, 6, 2, 1, 5, 3];
var res = arr.every(function(v) {
	return v > 3;
});
console.log(res);  //  false
// 过滤器返回值: true | false


// 部分满足: some
// true:有一个满足条件即可
// false:所有元素都不满足条件
res = arr.some(function(v) {
	return v > 3;
});
console.log(res); //true

- reduce 累乘

// 累积: reduce

var arr = [4, 6, 2, 1, 5, 3];
arr = [4, 2, 1, 3, 5];
res = arr.reduce(function(prev,value,index){ 
	return prev * value;
})
console.log(res); // 4*2*1*3*5

- sort 排序

// 排序
var arr = [4, 6, 2, 1, 5, 3];
newArr = arr.sort(function(o, n) {
	// return o > n;  // 升序, 没有回调函数
	return o < n;  // 降序
})
console.log(newArr); //Array(5) [ 5, 4, 3, 2, 1 ]

 

五、Math

Math 对象用于执行数学任务。

Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。

1、常用常量

  • E:返回算术常量 e,即自然对数的底数(约等于2.718)
  • LN2:返回 2 的自然对数(约等于0.693)
  • LN10:返回 10 的自然对数(约等于2.302)
  • LOG2E:返回以 2 为底的 e 的对数(约等于 1.4426950408889634)
  • LOG10E:返回以 10 为底的 e 的对数(约等于0.434)
  • PI:返回圆周率(约等于3.14159)
  • SQRT1_2:返回 2 的平方根的倒数(约等于 0.707)。
  • SQRT2:返回 2 的平方根(约等于 1.414)。
 
   
  

2、常用方法

  • abs(x):返回 x 的绝对值
  • ceil(x):向上取整
  • floor(x):向下取整
  • max(...n):求最大值
  • min(...n):求最小值
  • pow(x,y):返回 x 的 y 次幂
  • random():返回 0 ~ 1 之间的随机数
  • round(x):四舍五入
  • 查找其他方法
console.log(Math.abs(-10));  // 绝对值
console.log(Math.floor(3.9));  // 向下取整
console.log(Math.max(3, 5, 7, 1, 9.5))  // 取大值

// 随机数: [0, 1)
console.log(Math.random());
// [0, 5)
// Math.random() * 5;

// [0, 5]整数
// Math.floor(Math.random() * 6);  // [0, 6) => 向下取整 => [0, 5] 
// parseInt(Math.random() * 6);  // [0, 6) => 取整数部分 => [0, 5] 

// [5, 10] ==>> [0, 5]整数 + 5
// parseInt(Math.random() * 6) + 5


// [min, max]
// parseInt(Math.random() * (max - min + 1)) + min

- 封装函数实现指定范围内的随机数

//封装获取指定范围的随机数
function randomNum(min, max) {
	return parseInt(Math.random() * (max - min + 1)) + min;
}
for (var i = 0; i < 20; i++) {
	console.log(randomNum(5, 8));
}

六、正则

具体正则匹配规则符

正则表达式是描述字符模式的对象。

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

1、语法

var patt=new RegExp(pattern,modifiers);

//或者更简单的方式:

var patt=/pattern/modifiers;

// 构造函数
var re = new RegExp('^\\w', 'igm');
// 字面量
var re = /^\w/igm;
  • pattern(模式):描述了表达式的模式
  • modifiers(修饰符): 用于指定全局匹配、区分大小写的匹配和多行匹配

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。

//比如,以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;

 

2、修饰符

  • i:不区分大小写进行匹配
  • g:全文匹配 (查找所有匹配而非在找到第一个匹配后停止)。
  • m:多行匹配

3、正则方法

方法 描述
exec() 检索字符串中指定的值。返回找到的值,并确定为第一条结果所有信息的数组。
test() 检索字符串中指定的值。返回 true 或 false。
toString() 返回正则表达式的字符串。

4、字符串方法

方法 描述
search(re) 检索与正则表达式相匹配的值,返回匹配的索引,查询失败返回-1
match(re) 找到一个或多个正则表达式的匹配,返回数组(可全文匹配)
replace(re, newStr) 替换与正则表达式匹配的子串(可全文匹配)
split(re, n) 把字符串分割为字符串数组,n的值可以决定结果的数组长度(可选参数)
// 构造函数
var re = new RegExp('\\w');
var res = re.test("abc");
console.log(res); //true

// 字面量
re = /\w/;
res = re.test("abc");
console.log(res); //true

res = re.exec("abc");
console.log(res); //Array [ "a" ]


// 字符串的match方法
str = "ABCABC";
// re = /a/; // null => test
// re = /a/i; // 非多文匹配类似于exec
re = /a/ig;  // 所有满足结构的结果数组
var arr = str.match(re);
console.log(arr); //Array [ "A", "A" ]

str = "abc123x9y8z7\n123";
re = /^\d/m;
arr = str.match(re);
console.log(arr); //Array [ "1" ]

// 修饰符
// i: 不区分大小写
// g: 全文匹配(多匹配)
// m: 多行匹配

猜你喜欢

转载自blog.csdn.net/qq_33961117/article/details/83115599