javascript内置对象
概念:
可以直接使用的对象(不需要使用字面量、Object、构造函数创建的对象,是javascript已经定义好的对象)
- 使用
MDN
(web开发文档的网站)查询资料:客户端 Web API - 学习 Web 开发 | MDN (mozilla.org)
Math对象
-
是一个内置对象,用于数学运算的,不是一个函数对象(通过构造函数创建的对象称为函数对象),在创建Math对象时,不能使用new运算符(既不能 new Math( ) )
-
使用方法:
Math.属性名 Math.方法名(【参数】)
-
方法:
- Math.PI:表示圆周率
console.log(Math.PI); //3.1415926...
-
Math.abs(x):返回参数的绝对值
-
Math.floor(x):返回小于形参x的最大整数,向下取整
-
Math.ceil(x):返回大于等于形参x的最小整数,向上取整
-
Math.max(a,b,c,d…n):找到最大的数,只能用数字(数组的话得用ES6)
let num = (123123,12310,10000,999) console.log(Math.max(num));
-
Math.pow(x,y):x的y次方
-
Math.sqrt(x)x的平方根
-
Math.round(x):x四舍五入的整数
-
Math.random():大于0.0-1.0的随机数(不包含1.0)
-
Math.trunc():取整
// 表示生成大于或等于min且小于max****的随机值
Math.random**() * (max - min) +** min**;**
// 表示生成0到任意数之间的随机整数
Math.floor**(Math.random() * (max + 1****));**
// 表示生成1到任意数之间的随机整数
Math.floor**(Math.random() * (max + 1) + 1****);**
练习1:生成一个0~50的随机数:
function Random() {
this.geiRandom = function (min, max) {
let num = Math.random() * (max - min) + min;
return Math.round(num)
}
}
let r1 = new Random()
console.log(r1.geiRandom(10, 50));
练习2:生成一个二维数组,3行4列
function Random() {
this.geiRandom = function (min, max) {
let num = Math.random() * (max - min) + min;
return Math.round(num)
}
}
let r1 = new Random()
console.log(r1.geiRandom(10, 50));
let arr = new Array(
new Array(4),
new Array(4),
new Array(4),
)
let str = ""
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
arr[i][j] = r1.geiRandom(0, 99)
str += arr[i][j] + '\t'
}
str += '\n'
}
console.log(str);
Date对象
-
是一个函数对象,可以用new 运算符创建对象
- 无参的构造函数:new Date()
let d1 = new Date(); console.log(d1); // Fri Oct 21 2022 15:40:42 GMT+0800 (中国标准时间)
-
传入年月日、时分秒,月份值应该在0-11之间,0表示1月,11表示12月
new Date (年,月,日,时,分,秒); new Date(2022,9,21,15,42,50);
-
传入字符串表示日期和时间
new Date(`字符串`)
-
传入整数:new Date
-
其他函数
- getFullYear( ) :获取年份(4位)
- getmoth( ):获取月份(0-11)
- getDate( ) :获取日期(月份中 的某一天,1~31之间)
- gatDay( ) :获取今天是周几(0~6)0表示周天
- getHours( ) :获取小时数
- getMinutes( ):获取分钟数
- getTime( ):获取1970年1月1日0时0分0秒到当前日期时间之间的毫秒数
- toLocaleDateString( ):返回该日期对象日期部分的字符串,将年月日转换成字符串
- toLocaleString( );返回该日期对象字符串,日期对象转换为字符串
- toLocaleTimeString( ):返回日期对象时间部分的字符串
函数默认的内置对象:argements(本质是数组,存放的调用函数是传递的实参个数)
3、对象:是一种复合数据类型。是属性和行为的结合体
(1)使用字面量:{ }
(2)使用Object对象:new Object({ })
(3)使用构造函数:new 构造函数名(【参数】)—- 重难点
a、构造函数的定义:构造函数的本质是函数,作用是初始化对象的
function 构造函数名(【参数】){
this.属性名 = 属性值
this.函数名 = function(【参数】){
函数体语句
}
}
function Book(){
this.bookName = ‘西游记’
}
b、构造函数的使用
let b1 = new Book()
let b2 = new Book()
(4)通过对象来访问属性和函数
对象名.属性名
对象名.函数名(【参数】)
(5)对象数组:数组中存放的元素是对象
4、内置对象:
(1)Math对象:非函数对象。使用时直接通过 Math.属性名 、Math.方法名(【实参】)
(2)Date对象:使用时需要先创建对象( new Date() )
(3)Array对象:
String内置对象
String对象
:字符串。用单引号(’’) 或双引号(””)括起来的字符序列
(1)创建方式:
a、字面量:’’ 或 “”
let s1 = 'abcd'
let s2 = "玛卡巴卡"
let s3 = "abcde'def'" //注意单引号和双引号的嵌套(不能交叉)
b、使用构造函数:new String()
let s4 = new String('西安') //s4是一个字符串对象
(2)字符串的属性:length —— 表示字符串的长度(字符串中字符的个数)
字符串对象名.length
2、String对象的常用方法:字符串名.方法名(【实参】)
charAt( index ):
返回字符串中index位置上的字符。参数index代表索引值(下标),若没有找到则返回空
charCodeAt(index):
返回字符串中index位置上的字符的Unicode编码
ASCII码:是美国做的字符编码 (’a’:97……) ——— 只支持英文字符。表示一个字符使用1个字节(byte),即8个二进制位(bit)
Unicode码:国际标准化组织做的一套编码。表示一个字符使用2个字节,即16个二进制位(bit) —— 支持中文
ISO-8859-1码:不支持中文
GBK:支持中文
GB2312:支持简体中文
(3)concat(字符串):将两个及两个以上的字符串进行连接
(4)endsWith(字符串):判断字符串是否是以给定的子串结尾。是则返回true,不是则返回false
indexOf(子串):
返回子串在字符串中首次出现的位置(下标)。若返回-1,表示没有找到子串 。
lastIndexOf(子串):返回子串在字符串中最后出现的位置(下标)
includes(子串):查找字符串中是否包含指定的子串。若包含返回true,不包含返回false
startsWith(子串):判断字符串是否以给定子串开头。是则返回true,不是则返回false
split(分隔字符):将字符串分割成字符串数组
replace(oldStr,newStr):在字符中查找oldStr第一次出现的位置,并用newStr替换它
substr(start,length):截取字符串中从start开始的连续length个字符。当参数length省略时,截取从start开始到串末尾的所有字符
substring(start,end):截取start到end之间的子串,不包含end
trim():去掉字符串两端的空白字符
trimEnd():去掉字符串末尾的空白字符
trimStart():去掉字符串前面的空白字符
toLowerCase():将字符串中的所有字母转换为小写字母
toUpperCase():将字符串中的所有字母转换为大写字母
toString():将字符串对象转换成字符串
字符串的不可变性
:指当一个字符串被定义后,它的内容是不变的。虽然通过调用相关函数看似改变了串的内容,实际是在内存中新开辟了一个空间存放新的串
综合练习:
1、查找字符的位置:
let str = '离谱他妈给离谱开门,离谱到家了' let first_index = str.indexOf('谱') //返回’谱‘在字符串str中第一次出现的位置 console.log(first_index) /* 需求:字符串中除了'谱'第一次出现的位置之外,它下一次出现的位置是什么 indexOf(子串):返回'子串'在源串中第一次出现的位置 indexOf(子串,整数):从大于等于整数的位置开始,查找子串第一次出现的位置 */ let s_index = str.indexOf('谱',2) //从下标为2的位置开始查找'谱'第一次出现的位置 console.log(s_index)
2、查找字符串“abcoefoosxjisodhqoxufo”中所有o出现的位置和次数
// 查找字符串“abcoefoosxjisodhqoxufo”中所有o出现的位置和次数 let str = 'abcoefoosxjisodhqoxufo' let count = 0 //统计'o'出现的次数 let index = str.indexOf('o') //返回'o'在字符串中第一次出现的位置 while(index != -1){ console.log(index) count++ index = str.indexOf('o',index+1) //从index+1的位置开始查找下一个'o'出现的位置 } console.log(`字母o一共出现了${ count }次`)
3、[‘red’,‘blue’,‘red’,‘green’,‘pink’,‘red’]中red出现的位置和次数
(1)将数组转换成字符串:join
let arr = ['red','blue','red','green','pink','red'] //第一步:将字符串数组转换成字符串:join let str = arr.join() console.log(str) //第二步:在str中查找子串red出现的位置和次数 let count = 0 //统计'o'出现的次数 let index = str.indexOf('red') //返回'o'在字符串中第一次出现的位置 while(index != -1){ console.log(index) count++ index = str.indexOf('red',index+1) //从index+1的位置开始查找下一个'o'出现的位置 } console.log(`子串red一共出现了${ count }次`)
4、统计字符串中出现最多的字符和次数
(1)关于对象的属性的访问:
对象名.属性名
对象名[‘属性名’]
let user = { idCard:'610302201511210045', userName: '张三', show:function(){ console.log('身份证号:',this.idCard) console.log('姓名:',this.userName) } } // console.log(user.idCard) // user.show() let proty = 'idCard' console.log(user[proty]) user['show']()
(2)在对象中保存每个字符即该字符出现的次数
let str = "abcoefooaa"; let k = {} //定义一个空对象:用于保存字符串中字符及统计该字符出现的次数 for(let i=0;i<str.length;i++){ let chars = str.charAt(i) //将下标为i的字符取出赋给变量chars if(k[chars]){ //若对象k中存在属性chars(chars变量代表某个字符) k[chars]++ }else{ //对象k中不存在属性chars(chars变量代表某个字符) k[chars] = 1 } } //遍历对象的属性:for...in循环 let max = 0 let ch = '' for(let t in k){ //t='a',k[t]<=>k['a']<=>k.'a' == 1 if(k[t]>max){ max = k[t] //max = a ch = t //ch = 'a' } } console.log(`出现次数最多的字母是${ ch } :${ max }`)