JavaScript—内置对象
1、JavaScript中的对象分为三种:自定义对象、内置对象、浏览器对象
2、前两种对象是JS基础,属于ECMAscript;第三个浏览器对象属于JS独有
3、内置对象有:Math、Date、Array、String等
Math对象
Math 对象用于执行数学任务。
Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。
语法
var x = Math.PI; // 返回PI
var y = Math.sqrt(16); // 返回16的平方根
Math 对象属性
属性 | 描述 |
---|---|
返回算术常量 e,即自然对数的底数(约等于2.718)。 | |
返回 2 的自然对数(约等于0.693)。 | |
返回 10 的自然对数(约等于2.302)。 | |
返回以 2 为底的 e 的对数(约等于 1.4426950408889634)。 | |
返回以 10 为底的 e 的对数(约等于0.434)。 | |
返回圆周率(约等于3.14159)。 | |
返回 2 的平方根的倒数(约等于 0.707)。 | |
返回 2 的平方根(约等于 1.414)。 |
Math 对象方法
方法 | 描述 |
---|---|
返回 x 的绝对值。 | |
返回 x 的反余弦值。 | |
返回 x 的反正弦值。 | |
以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 | |
返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 | |
对数进行上舍入。 | |
返回数的余弦。 | |
返回 Ex 的指数。 | |
对 x 进行下舍入。 | |
返回数的自然对数(底为e)。 | |
返回 x,y,z,...,n 中的最高值。 | |
返回 x,y,z,...,n中的最低值。 | |
返回 x 的 y 次幂。 | |
返回 0 ~ 1 之间的随机数。 | |
四舍五入。 | |
返回数的正弦。 | |
返回数的平方根。 | |
返回角的正切。 |
1、利用对象封装自己的数学对象 里面有PI、最大值和最小值
let myMath = {
PI : 3.1415926535,
max : function () {
let max = arguments[0];
for (let i = 1; i < arguments.length;i++){
if ( max < arguments[i]){
max = arguments[i];
}
}
return max;
},
min : function () {
let min = arguments[0];
for (let i = 1;i < arguments.length;i++){
if (min > arguments[i]){
min = arguments[i];
}
}
return min;
}
}
console.log(myMath.PI);
console.log(myMath.max(1,2,3,4,5,7,3,2));
console.log(myMath.min(1,3,5,6,8,4,9,0));
结果:3.1415926535
7
0
2、获取两个数之间的随机整数,包含这两个整数
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min +1)) +min;
}
console.log(getRandom(1,10));
结果:1
3、随机点名
// 随机点名
// 获取两个数之间的随机整数,包含这两个整数
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min +1)) +min;
}
let arr = ['吴一凡','张三疯','雷俊','古田路','王撕葱','特离谱'];
console.log(arr[getRandom(0,arr.length-1)]);
结果:王撕葱
4、猜数字游戏
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min +1)) +min;
}
let randomNum = getRandom(1,10);
while (true){
let num = prompt("请输入1~10之间的一个整数");
if (num > randomNum){
alert("格局大了");
}else if (num < randomNum){
alert("格局小了");
}else {
alert("格局刚刚好");
break;
}
}
5、猜数字游戏扩展。只有10次机会猜1-100之间的数字
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min +1)) +min;
}
let randomNum = getRandom(1,100);
for (let i = 10;i > 0;i--){
let num = prompt("请输入1~100之间的一个整数,你还有:"+i+"次机会");
if (num > randomNum){
alert("格局大了");
}else if (num < randomNum){
alert("格局小了");
}else {
alert("格局刚刚好");
break;
}
}
Date对象
Date 对象用于处理日期与时间。
创建 Date 对象: new Date()
以下四种方法同样可以创建 Date 对象:
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
Date 对象属性
属性 | 描述 |
---|---|
返回对创建此对象的 Date 函数的引用。 | |
使您有能力向对象添加属性和方法。 |
Date 对象方法
方法 | 描述 |
---|---|
从 Date 对象返回一个月中的某一天 (1 ~ 31)。 | |
从 Date 对象返回一周中的某一天 (0 ~ 6)。 | |
从 Date 对象以四位数字返回年份。 | |
返回 Date 对象的小时 (0 ~ 23)。 | |
返回 Date 对象的毫秒(0 ~ 999)。 | |
返回 Date 对象的分钟 (0 ~ 59)。 | |
从 Date 对象返回月份 (0 ~ 11)。 | |
返回 Date 对象的秒数 (0 ~ 59)。 | |
返回 1970 年 1 月 1 日至今的毫秒数。 | |
返回本地时间与格林威治标准时间 (GMT) 的分钟差。 | |
根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 | |
根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 | |
根据世界时从 Date 对象返回四位数的年份。 | |
根据世界时返回 Date 对象的小时 (0 ~ 23)。 | |
根据世界时返回 Date 对象的毫秒(0 ~ 999)。 | |
根据世界时返回 Date 对象的分钟 (0 ~ 59)。 | |
根据世界时从 Date 对象返回月份 (0 ~ 11)。 | |
根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 | |
getYear() | 已废弃。 请使用 getFullYear() 方法代替。 |
返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 | |
设置 Date 对象中月的某一天 (1 ~ 31)。 | |
设置 Date 对象中的年份(四位数字)。 | |
设置 Date 对象中的小时 (0 ~ 23)。 | |
设置 Date 对象中的毫秒 (0 ~ 999)。 | |
设置 Date 对象中的分钟 (0 ~ 59)。 | |
设置 Date 对象中月份 (0 ~ 11)。 | |
设置 Date 对象中的秒钟 (0 ~ 59)。 | |
setTime() 方法以毫秒设置 Date 对象。 | |
根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 | |
根据世界时设置 Date 对象中的年份(四位数字)。 | |
根据世界时设置 Date 对象中的小时 (0 ~ 23)。 | |
根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 | |
根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 | |
根据世界时设置 Date 对象中的月份 (0 ~ 11)。 | |
setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。 | |
setYear() | 已废弃。请使用 setFullYear() 方法代替。 |
把 Date 对象的日期部分转换为字符串。 | |
toGMTString() | 已废弃。请使用 toUTCString() 方法代替。 |
使用 ISO 标准返回字符串的日期格式。 | |
以 JSON 数据格式返回日期字符串。 | |
根据本地时间格式,把 Date 对象的日期部分转换为字符串。 | |
根据本地时间格式,把 Date 对象的时间部分转换为字符串。 | |
根据本地时间格式,把 Date 对象转换为字符串。 | |
把 Date 对象转换为字符串。 | |
把 Date 对象的时间部分转换为字符串。 | |
根据世界时,把 Date 对象转换为字符串。实例:var today = new Date(); var UTCstring = today.toUTCString(); |
|
根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 | |
返回 Date 对象的原始值。 |
1、输出年月日、时分秒、星期几
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
let dates = date.getDate();
let day = date.getDay();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
let arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
console.log("现在是:"+year+'年'+month+'月'+dates+'日 '+hours+':'+minutes+':'+seconds+' '+arr[day]);
结果:现在是:2022年2月24日 20:54:43 星期四
2、格式化日期 时分秒
function getTime() {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
month = month < 10 ? '0'+month : month;
let dates = date.getDate();
dates = dates < 10 ? '0'+dates : dates;
let hours = date.getHours();
hours = hours < 10 ? '0'+hours : hours;
let minutes = date.getMinutes();
minutes = minutes < 10 ? '0'+minutes : minutes;
let seconds = date.getSeconds();
seconds = seconds < 10 ? '0'+seconds :seconds;
return year+'-'+month+'-'+dates+' '+hours+':'+minutes+':'+seconds;
}
console.log(getTime());
结果:2022-02-24 21:16:05
3、时间戳
//获得Date总的毫秒数(时间戳) 距离1970年1月1日过去了多少毫秒
// 1、通过 valueOf() getTime()
let date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
// 2、简单的写法(最常用的写法)
let date1 = +new Date();
console.log(date1);
// 3、H5新增的获得总的毫秒数
console.log(Date.now());
4、简易倒计时
function countDown(time) {
let nowTime = +new Date(); //返回的是当前时间总的毫秒数
let inputTime = +new Date(time); //返回的是当前用户输入时间的总的毫秒数
let times = (inputTime - nowTime) / 1000; //times是剩余时间的总秒数
let d = parseInt(times / 60 / 60 / 24); //天
d = d < 10 ? '0'+d : d;
let h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0'+h : h;
let m = parseInt(times / 60 % 60); //分
m = m < 10 ? '0'+m : m;
let s = parseInt(times % 60); //秒
s = s < 10 ? '0'+s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
let time = prompt("请输入结束时间(xxxx-xx-xx xx:xx:xx)")
console.log(countDown(time));
结果:42天1时25分7秒
Array 对象
Array 对象用于在变量中存储多个值:
var cars = ["Saab", "Volvo", "BMW"];
第一个数组元素的索引值为 0,第二个索引值为 1,以此类推。。
数组属性
属性 | 描述 |
---|---|
返回创建数组对象的原型函数。 | |
设置或返回数组元素的个数。 | |
允许你向数组对象添加属性或方法。 |
Array 对象方法
方法 | 描述 |
---|---|
连接两个或更多的数组,并返回结果。 | |
从数组的指定位置拷贝元素到数组的另一个指定位置中。 | |
返回数组的可迭代对象。 | |
检测数值元素的每个元素是否都符合条件。 | |
使用一个固定值来填充数组。 | |
检测数值元素,并返回符合条件所有元素的数组。 | |
返回符合传入测试(函数)条件的数组元素。 | |
返回符合传入测试(函数)条件的数组元素索引。 | |
数组每个元素都执行一次回调函数。 | |
通过给定的对象中创建一个数组。 | |
判断一个数组是否包含一个指定的值。 | |
搜索数组中的元素,并返回它所在的位置。 | |
判断对象是否为数组。 | |
把数组的所有元素放入一个字符串。 | |
返回数组的可迭代对象,包含原始数组的键(key)。 | |
搜索数组中的元素,并返回它最后出现的位置。 | |
通过指定函数处理数组的每个元素,并返回处理后的数组。 | |
删除数组的最后一个元素并返回删除的元素。 | |
向数组的末尾添加一个或更多元素,并返回新的长度。 | |
将数组元素计算为一个值(从左到右)。 | |
将数组元素计算为一个值(从右到左)。 | |
反转数组的元素顺序。 | |
删除并返回数组的第一个元素。 | |
选取数组的一部分,并返回一个新数组。 | |
检测数组元素中是否有元素符合指定条件。 |
1、创建数组的两种方式
//1.利用数组字面量
let arr = [1,2,3];
console.log(arr[0]);
//2.利用new Array()
let arr1 = new Array(); //创建了一个空的数组
let arr2 = new Array(2); //这个2表示这个数组的长度为2,里面有两个空的数组元素
let arr3 = new Array(2,3) //等价于[2,3] 这里表示数组有两个元素,是2和3
2、 添加和删除数组元素方法
添加
1、push()
//(1)push可以给数组追加新的元素
//(2)push()参数直接写数组元素
//(3)push完毕之后,返回的结果是新数组的长度
//(4)原数组也会发生变化
let arr = [1,2];
// arr.push(5,6,7,8,'apple');
console.log(arr); //[1,2]
console.log(arr.push(111,333,4444)) //5
2、unshift()
//(1)unshift是可以在数组前面追加新的元素
//(2)unshift()参数直接写数组元素
//(3)unshift完毕之后,返回的结果是新数组的长度
//(4)原数组也会发生变化
arr.unshift(00,11,22,33);
console.log(arr); //[0, 11, 22, 33, 1, 2, 111, 333, 4444]
console.log(arr.unshift(22)) //10
删除
3、pop()
//(1)pop是可以在数组后面删除最后一个元素
//(2)pop()没有参数
//(3)pop完毕之后,返回的结果是删除的那个元素
//(4)原数组也会发生变化
console.log(arr.pop()); //4444
console.log(arr) //[22,0, 11, 22, 33, 1, 2, 111, 333]
4、shift()
//(1)shift是可以在数组前面删除第一个元素
//(2)shift()没有参数
//(3)shift完毕之后,返回的结果是删除的那个元素
//(4)原数组也会发生变化
console.log(arr.shift()); //22
console.log(arr) //[0, 11, 22, 33, 1, 2, 111, 333]
3、筛选数组
//删除大于2000的数组元素
let arr = [1500,2300,1000,4000,1700];
let newArr = [];
for (let i = 0 ;i < arr.length;i++){
if (arr[i] < 2000){
newArr.push(arr[i])
}
}
console.log(newArr);
结果:(3) [1500, 1000, 1700]
4、数组排序
//1、翻转数组
let arr = ['apple','banner','abs','CCTV']
console.log(arr.reverse());
//2、数组排序(冒泡排序)
let arr1 = [3,4,5,7,8,9,1,0,12,66,77,88];
arr1.sort(function (a,b) {
return a-b; //升序排序
// return b-a; //降序排序
})
console.log(arr1);
结果:(4) ['CCTV', 'abs', 'banner', 'apple']
(12) [0, 1, 3, 4, 5, 7, 8, 9, 12, 66, 77, 88]
5、返回数组索引
let arr = ['吴一凡','张三疯','雷俊','古田路','王撕葱','特离谱','王撕葱'];
//从前往后找 indexOf()
console.log(arr.indexOf('王撕葱'));
//4 只返回第一个索引号,如果找不到就返回-1
//从后往前找 lastIndexOf()
console.log(arr.lastIndexOf('王撕葱'));
//6 只返回最后一个索引号,如果找不到就返回-1
结果:4
6
6、数组去重
let arr = ['吴一凡','张三疯','雷俊','古田路','王撕葱','特离谱','王撕葱'];
function unique(){
let newArr = [];
for (let i = 0;i < arr.length; i++){
if (newArr.indexOf(arr[i]) === -1 ){ //全等
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));
结果:(6) ['吴一凡', '张三疯', '雷俊', '古田路', '王撕葱', '特离谱']
7、数组转换为字符串
//1、toString()
let arr = [1,2,3,4,5];
console.log(arr.toString()); //1,2,3,4,5
// 2、join()
console.log(arr.join()); //1,2,3,4,5
console.log(arr.join('、')); //1、2、3、4、5
console.log(arr.join('-')); //1-2-3-4-5
String 对象
String 对象用于处理文本(字符串)。
String 对象创建方法: new String()。
语法
var txt = new String("string");
或者更简单方式:
var txt = "string";
String 对象属性
属性 | 描述 |
---|---|
对创建该对象的函数的引用 | |
字符串的长度 | |
允许您向对象添加属性和方法 |
String 对象方法
方法 | 描述 |
---|---|
返回在指定位置的字符。 | |
返回在指定的位置的字符的 Unicode 编码。 | |
连接两个或更多字符串,并返回新的字符串。 | |
判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。 | |
将 Unicode 编码转为字符。 | |
返回某个指定的字符串值在字符串中首次出现的位置。 | |
查找字符串中是否包含指定的子字符串。 | |
从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。 | |
查找找到一个或多个正则表达式的匹配。 | |
复制字符串指定次数,并将它们连接在一起返回。 | |
在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。 | |
在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。 | |
查找与正则表达式相匹配的值。 | |
提取字符串的片断,并在新的字符串中返回被提取的部分。 | |
把字符串分割为字符串数组。 | |
查看字符串是否以指定的子字符串开头。 | |
从起始索引号提取字符串中指定数目的字符。 | |
提取字符串中两个指定的索引号之间的字符。 | |
把字符串转换为小写。 | |
把字符串转换为大写。 | |
去除字符串两边的空白。 | |
根据本地主机的语言环境把字符串转换为小写。 | |
根据本地主机的语言环境把字符串转换为大写。 | |
返回某个字符串对象的原始值。 | |
返回一个字符串。 |
String HTML 包装方法
HTML 返回包含在相对应的 HTML 标签中的内容。
以下方法并非标准方法,所以可能在某些浏览器下不支持。
方法 | 描述 |
---|---|
创建 HTML 锚。 | |
用大号字体显示字符串。 | |
显示闪动字符串。 | |
使用粗体显示字符串。 | |
以打字机文本显示字符串。 | |
使用指定的颜色来显示字符串。 | |
使用指定的尺寸来显示字符串。 | |
使用斜体显示字符串。 | |
将字符串显示为链接。 | |
使用小字号来显示字符串。 | |
用于显示加删除线的字符串。 | |
把字符串显示为下标。 | |
把字符串显示为上标。 |
1、查找字符位置
//字符串不可变性:指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间
//根据字符串返回位置 str.indexOf('要查找的字符',[起始位置])
let str = '离谱他妈给离谱开门,离谱到家了';
console.log(str.indexOf('谱'));
console.log(str.indexOf('谱',2)); //从索引号是3的位置开始往后查找
2、查找字符串“abcoefoosxjisodhqoxufo”中所有o出现的位置和次数
let str = "abcoefoosxjisodhqoxufo";
let index = str.indexOf('o');
let count = 0;
while (index !== -1){
console.log(index);
count ++;
index = str.indexOf('o',index+1);
}
console.log("字符串o一共出现了"+count+"次")
结果:3 6 7 13 17 21
字符串o一共出现了6次
3、['red','blue','red','green','pink','red']中red出现的位置和次数
let arr = ['red','blue','red','green','pink','red']
let str = arr.join();
let index = str.indexOf('red');
let count = 0;
while (index !== -1){
console.log(index);
count++;
index = str.indexOf('red',index+1);
}
console.log("red共出现了"+count+"次");
结果:0 9 24
red共出现了3次
4、根据位置返回字符
let str = "apple";
// 1、charAt(index) 返回指定位置的字符(index字符串的索引号)
console.log(str.charAt(2));
// 2、charCodeAt(index) 获取指定位置处字符的ASCII码(index索引号)
console.log(str.charCodeAt(2));
// 3、str[index] 获取指定位置处字符
console.log(str[2]);
结果:p
112
p
5、统计出现最多的字符和次数
// 1、统计字符串出现的次数
let str = "abcoefoosxjisodhqoxufonkwhdhugoidghuigadugigcaugdut";
let k = {};
for (let i = 0;i < str.length; i++){
let chars = str.charAt(i);
if (k[chars]){
k[chars]++;
}else {
k[chars] = 1 ;
}
}
// console.log(k);
// 2、遍历字典,取出最大值
let max = 0;
let ch = '';
for (let i in k){
if (k[i] > max){
max = k[i];
ch = i;
}
}
console.log('出现最多次数的字符是:'+ch+',共出现了'+max+'次')
结果:出现最多次数的字符是:o,共出现了7次
6、拼接以及截取字符
// 1、concat("字符串1","字符串2"......)
let str = "张三";
console.log(str.concat("疯子"));
// 2、substr("截取的起始位置","截取几个字符");
let str1 = "计算机科学与技术";
console.log(str1.substr(3,2));
结果:张三疯子
科学
7、替换字符replace('被替换的字符','替换为的字符')
// 1、替换字符 replace('被替换的字符','替换为的字符') 它只会替换第一个字符
let str = "离谱他妈给离谱开门,离谱到家了";
console.log(str.replace('离谱','开心'));
// 2、把里面所有的离谱替换成开心
for (let i = 0;i < str.length;i++){
str = str.replace('离谱','开心');
}
console.log(str);
结果:开心他妈给离谱开门,离谱到家了
开心他妈给开心开门,开心到家了
8、字符转换为数组 split('分隔符')
let str = '吴一凡,张三疯,雷俊,古田路,王撕葱,特离谱';
console.log(str.split(','));
结果:['吴一凡', '张三疯', '雷俊', '古田路', '王撕葱', '特离谱']