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 返回算术常量 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)。

Math 对象方法

方法描述
abs(x) 返回 x 的绝对值。
acos(x) 返回 x 的反余弦值。
asin(x) 返回 x 的反正弦值。
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
ceil(x) 对数进行上舍入。
cos(x) 返回数的余弦。
exp(x) 返回 Ex 的指数。
floor(x) 对 x 进行下舍入。
log(x) 返回数的自然对数(底为e)。
max(x,y,z,...,n) 返回 x,y,z,...,n 中的最高值。
min(x,y,z,...,n) 返回 x,y,z,...,n中的最低值。
pow(x,y) 返回 x 的 y 次幂。
random() 返回 0 ~ 1 之间的随机数。
round(x) 四舍五入。
sin(x) 返回数的正弦。
sqrt(x) 返回数的平方根。
tan(x) 返回角的正切。
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 对象属性

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

Date 对象方法

方法描述
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getFullYear() 从 Date 对象以四位数字返回年份。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getYear() 已废弃。 请使用 getFullYear() 方法代替。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setTime() setTime() 方法以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。
setYear() 已废弃。请使用 setFullYear() 方法代替。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 已废弃。请使用 toUTCString() 方法代替。
toISOString() 使用 ISO 标准返回字符串的日期格式。
toJSON() 以 JSON 数据格式返回日期字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toUTCString() 根据世界时,把 Date 对象转换为字符串。实例:var today = new Date(); var UTCstring = today.toUTCString();
UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 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,以此类推。。


数组属性

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

Array 对象方法

方法描述
concat() 连接两个或更多的数组,并返回结果。
copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。
entries() 返回数组的可迭代对象。
every() 检测数值元素的每个元素是否都符合条件。
fill() 使用一个固定值来填充数组。
filter() 检测数值元素,并返回符合条件所有元素的数组。
find() 返回符合传入测试(函数)条件的数组元素。
findIndex() 返回符合传入测试(函数)条件的数组元素索引。
forEach() 数组每个元素都执行一次回调函数。
from() 通过给定的对象中创建一个数组。
includes() 判断一个数组是否包含一个指定的值。
indexOf() 搜索数组中的元素,并返回它所在的位置。
isArray() 判断对象是否为数组。
join() 把数组的所有元素放入一个字符串。
keys() 返回数组的可迭代对象,包含原始数组的键(key)。
lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。
map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
pop() 删除数组的最后一个元素并返回删除的元素。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reduce() 将数组元素计算为一个值(从左到右)。
reduceRight() 将数组元素计算为一个值(从右到左)。
reverse() 反转数组的元素顺序。
shift() 删除并返回数组的第一个元素。
slice() 选取数组的一部分,并返回一个新数组。
some() 检测数组元素中是否有元素符合指定条件。
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 对象属性

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

String 对象方法

方法描述
charAt() 返回在指定位置的字符。
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
concat() 连接两个或更多字符串,并返回新的字符串。
endsWith() 判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。
fromCharCode() 将 Unicode 编码转为字符。
indexOf() 返回某个指定的字符串值在字符串中首次出现的位置。
includes() 查找字符串中是否包含指定的子字符串。
lastIndexOf() 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
match() 查找找到一个或多个正则表达式的匹配。
repeat() 复制字符串指定次数,并将它们连接在一起返回。
replace() 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。
replaceAll() 在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。
search() 查找与正则表达式相匹配的值。
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。
split() 把字符串分割为字符串数组。
startsWith() 查看字符串是否以指定的子字符串开头。
substr() 从起始索引号提取字符串中指定数目的字符。
substring() 提取字符串中两个指定的索引号之间的字符。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写。
trim() 去除字符串两边的空白。
toLocaleLowerCase() 根据本地主机的语言环境把字符串转换为小写。
toLocaleUpperCase() 根据本地主机的语言环境把字符串转换为大写。
valueOf() 返回某个字符串对象的原始值。
toString() 返回一个字符串。

String HTML 包装方法

HTML 返回包含在相对应的 HTML 标签中的内容。

以下方法并非标准方法,所以可能在某些浏览器下不支持。

方法描述
anchor() 创建 HTML 锚。
big() 用大号字体显示字符串。
blink() 显示闪动字符串。
bold() 使用粗体显示字符串。
fixed() 以打字机文本显示字符串。
fontcolor() 使用指定的颜色来显示字符串。
fontsize() 使用指定的尺寸来显示字符串。
italics() 使用斜体显示字符串。
link() 将字符串显示为链接。
small() 使用小字号来显示字符串。
strike() 用于显示加删除线的字符串。
sub() 把字符串显示为下标。
sup() 把字符串显示为上标。
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(','));

结果:['吴一凡', '张三疯', '雷俊', '古田路', '王撕葱', '特离谱']

 

posted @ 2022-02-26 00:33  小鹅爸爸  阅读(46)  评论(0编辑  收藏  举报