前端学习(十七)JavaScript基础-内置对象

内置对象

内置对象提供了一些常用的属性和方法,能够帮助我们快速开发

如Math、Date、Array、String等

Math 数学对象

  • Math不是构造函数,它提供静态的属性和方法

    属性、方法名功能
    Math.PI圆周率
    Math.floor()向下取整
    Math.ceil()向上取整
    Math.round()四舍五入版 就近取整 注意 -3.5 结果是 -3
    Math.abs()绝对值
    Math.max()/Math.min()求最大和最小值
    Math.random()获取范围在[0,1)内的随机值
  • 对于形参,如果能转换为数字,则转换,不能转换,结果就是NaN

求指定范围内的随机整数

function getRandom(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min; 
}

Date 日期对象

  • Date是一个构造函数,使用前必须通过new Date()构造实例对象
  • Data对象有日期和时间相关的数据和方法
  • 使用举例:
//获取当前的日期和时间
var now = new Date();
//获取指定日期或时间的对象
var date = new Date('2019/5/1');
  • 如果创建实例时并未传入参数,则得到的日期对象是当前时间对应的日期对象
  • 使用Date实例的方法和属性
方法名说明
getFullYear获取当年
getMonth获取当月(0-11)
getDate获取当天
getDay获取星期几(0周日-6周六)
getHours获取当前小时
getMinutes获取当前分钟
getSeconds获取当前秒数

获取总的毫秒数

获取距离1970.1.1时间到现在的毫秒数,有三种方法

// 实例化Date对象
var now = new Date();
// 1. 用于获取对象的原始值
console.log(now.valueOf())	
console.log(now.getTime())	
// 2. 简单写可以这么做
var now = + new Date();			
// 3. HTML5中提供的静态方法,有兼容性问题
var now = Date.now();

数组对象

创建数组对象有两种方式

  • 字面量
var arr = [1,"test",true];
  • 构造函数
//不传参数时,创建空数组
var arr1 = new Array();
//只传一个参数,该参数为数组长度
var arr2 = new Array(2);
//传入多个参数,这些参数为数组的元素
var arr3 = new Array(2,3,4);

检测对象是否为数组

  • instanceof 运算符

  • Array.isArray() 静态方法

var arr = [1, 2, 3];
var arrf = 'abc123';
console.log(arr instanceof Array);
console.log(arrf instanceof Array);
console.log(Array.isArray(arr));
console.log(Array.isArray(arrf));

添加或删除数组元素

以下四种方法,均会改变原数组

方法名说明返回值
push(参数1,…)末尾添加元素新的长度
pop()末尾删除一个元素被删除的值
unshift(参数1,…)开头增加元素新的长度
shift()开头删除一个元素第一个元素的值

数组排序

以下两种方法会改变原数组,并返回

方法名说明返回值
reverse()颠倒数组中元素的顺序修改过的数组
sort()对数组中的元素进行排序修改过的数组

注意:sort方法需要传入参数来设置升序、降序排序

  • 如果传入“function(a,b){ return a-b;}”,则为升序
  • 如果传入“function(a,b){ return b-a;}”,则为降序

数组索引

方法名说明返回值
indexOf()查找指定元素的索引,找到即返回,不存在则返回-1元素索引号或-1
lastIndexOf()查找指定元素的索引,返回最后一个符合元素的索引,不存在则返回-1元素索引号或-1

数组转换为字符串

方法名说明返回值
toString()把数组转换为字符串,并用逗号分隔每个元素返回转换后的字符串
join(‘分隔符’)把数组转换为字符串,并用指定的分隔符每个元素返回转换后的字符串

join方法如果不传入参数,则效果同toString

其它方法

方法名说明返回值
concat()连接两个或多个数组返回拼接后的数组,不影响原数组
slice()数组截取slice(begin, end)返回截取到的新数组,不影响原数组
splice()数组删除splice(第一个开始, 要删除的个数)返回被删除后的数组,影响原数组
var arr = [11, 22, 33, 33, 44, 55, 66];
var arrnew = ['qqq', '123', true];

//concat 测试
console.log(arr.concat(arrnew));
console.log(arr);
console.log(arrnew);

//slice 测试
console.log(arr.slice(2, 4));
console.log(arr);

//splice 测试
console.log(arr.splice(2, 4)); //[33, 33, 44, 55]
console.log(arr); //[11, 22, 66]

字符串对象

为了方便操作基本数据类型,js提供了三种特殊的引用类型:String、Number、Boolean

基本数据类型是简单数据类型,没有属性和方法,js利用以上三种引用类型,将其包装为复杂数据类型,使其有了某些属性和方法

var str = 'andy';
console.log(str.length);//4

字符串的不可变性

var str = '123abc';
str = '456qwe';

以上代码,看上去str变化了,其实是申请了新的内存空间,并赋了新的值,原先空间的值并不会发生变化

因此,在频繁进行字符串拼接操作时,由于单核CPU一次运算只能有两个操作数(组成原理),会产生大量的中间变量,反复的申请内存空间,非常耗时,效率非常低

根据字符返回索引

字符串变量经过包装后,可以调用部分方法来操作字符串

方法名说明返回值
index(‘字符’,开始的位置)从前往后找,匹配到即返回返回索引或者-1
lastIndexOf()从后往前找,匹配到即返回返回索引或者-1
var str = '012345678901234567890';
console.log(str.indexOf('3', 3)); //3
console.log(str.lastIndexOf('4')); //14

根据索引返回字符

方法名说明
charAt(index)返回对应索引位置字符
charCodeAt(index)返回对应索引位置字符的ASCII码
str[index]获取指定索引处的字符
var str = '012345678901234567890';
console.log(str.charAt(3)); //3
console.log(str.charCodeAt(4)); //52
console.log(str[5]); //5

字符串操作方法

方法名说明
concat(str…)连接多个字符串,等效于+,原串不改变
substr(start,length)获取子串,原串不改变
slice(start,end)截取字符串,原串不改变
substring(start,end)基本同slice,但是不接受负值
replace(‘替换前的’,‘替换后的’)字符串替换,原串不改变
split(“分割符”)将字符串分隔为数组
var str = '01234567';
var strnew = 'abcdefghjik';
//concat
console.log(str.concat(strnew));
console.log(str);
console.log(strnew);
//substr/slice/substring
console.log(str.substr(1, 5));
console.log(str.slice(1, 5));
console.log(str.substring(1, 5));
console.log(str);
//replace
console.log(str.replace('2', '0'));
console.log(str);
//split
var strnew = 'abcde ccc:123  777!qav';
console.log(strnew.split(':')); //["abcde ccc", "123  777!qav"]
console.log(strnew);

简单和复杂数据类型

简单数据类型

简单数据类型、基本数据类型、值类型:变量中存储的是值本身,包括String、Number、Boolean、undefined、null等

复杂数据类型

复杂数据类型、引用类型:变量中存储的是地址(引用),通过new关键字来创建对象,如Object、Array、Date

传参

简单类型进行值传递,所以函数的形参改变,不会影响到实参

复杂类型进行引用传递,所以函数可以改变对象内的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值