js内置对象-note

内置对象

  • js中的对象分为3种:自定义对象、内置对象、浏览器对象
  • 前面的两种对象时js基础内容 属于ecmascript 第三个浏览器对象属于我们js独有的 我们js api讲解

查文档

  1. MDN MDN

Math对象

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象


<script>
// 1. 绝对值方法
console.log(Math.abs(1)); //1
console.log(Math.abs(-1)); ///1
console.log(Math.abs('-1')); //1
console.log(Math.abs('pink')); //NaN
// 2. 三个取整方法
// (1) Math.floor() 向下取整 往最小了 取值
console.log(Math.floor(1.2));
console.log(Math.floor(1.8));
// (2) Math.ceil() 向上取整 往最大了 取值
console.log(Math.ceil(1.2));
console.log(Math.ceil(1.9));
// (3) Math.round() 四舍五入 其他数字都是四舍五入 但是 .5特殊 它往大了取
console.log(Math.round(1.4));
console.log(Math.round(1.8));
console.log(Math.round(-1.2));
console.log(Math.round(-1.5));
</script>

console.log(Math.random());
// Math.random()返回的是 一个随机的小数 [0,1)
// 得到2个数之间的随机数
function getRandom(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
}
console.log(getRandom(1,10));
// 随机点名
var arr = ['小花','小明','小欧'];
console.log(arr[getRandom(0,arr.length-1)]);
</script>

日期对象

Date概述

  • Date对象和Math对象不一样, 它是一个构造函数,所以我们需要实例化后才能使用
  • Date实例用来处理日期和时间
<script>
// Date() 日期对象 是一个构造函数 必须用new 来调试我们的日期对象
var date = new Date();
console.log(date);
var date1 = new Date(2019,1,2);
console.log(date1);
var date2 = new Date(2019-10-1);
console.log(date2);
</script>
<script>
function conutDown(time){
var nowTime = + new Date();//返回的是当前时间总的毫秒数
var inputTime = +new Date(time);// 返回的是用户输入时间总的毫秒数
var times = (inputTime - nowTime)/1000;// times 是剩余时间总的秒数
d = parseInt(times/60/60/24); //计算天数
d = d<10 ? '0' + d : d;
h = parseInt(times/60/60%24); //计算小时
h = h<10 ? '0' + h : h;
m = parseInt(times / 60 %60); //计算分钟
m = m<10 ? '0' + m : m;
s = parseInt(times%60); //计算当前秒数
s = s<10 ? '0' + s : s;
return d +'天'+ h + '时' + m + '分' + s + '秒';
}
console.log(conutDown('2022-5-7 18:00:00'));
var nowTimes = new Date();
console.log(nowTimes);
</script>

数组对象

  1. 利用数组字面量
  2. 利用new Array()
<script>
// 创建数组的两种方式
// 1.利用数组字面量
var arr = [1,3,54,3]
console.log(arr[0]);
// 利用new Array()
var arr1 = new Array() //创建了一个空的数组
var arr2= new Array(4) //创建一个 长度为4的数组
var arr3 = new Array(3,65,65,65) //等价于[3,65,65,65] 这样写表示里面有2个数组元素 是3,65,65,65
console.log(arr1,arr2,arr3);
</script>

  1. 检查是否为数组的方法
<script>
//翻转数组
function reverse(arr){
var newArr = [];
for (var i = arr.length -1 ;i>=0;i--){
newArr[newArr.length] = arr[i]
}
return newArr;
}
var arr = new Array(1,54,46,65);
console.log(reverse(arr));
var obj = new Object;
obj.name = 'dfhak';
obj.sex = '男';
console.log(obj);
//1.检查是否为数组 instanceof
console.log(arr instanceof Array);
console.log(obj instanceof Array);
//2. Array.isArray(参数)
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
</script>

  1. 增加删除数组元素的方法
    <script>
    //添加数组元素的方法
    // push() 在我们数组的末尾添加一个或者多个数组元素 push 推
    var arr = [1,34,3,5,35,5];
    arr.push(1,1,1,1,1,1,99,9);
    console.log(arr); //等价于console.log(arr.push((1,1,1,1,1,1))
    // 1. push 是可以给数组追加新的元素
    // 2. push()参数直接写 数组元素就可以
    // 3. push 完毕之后 返回的 结果是 欣数组的长度
    // 4. 原数组也会发生变化
    //unshift()
    var arr1 = [1,34,3,5,35,5];
    console.log(arr1.unshift('re','3434'));
    console.log(arr1);
    // unshift是可以给数组前面追加新的元素
    // unshift()参数直接写 数组元素就可以了
    // unshift 完毕之后 返回的结果是 新数组的长度
    // 原数组也会发生变化
    // pop() 可以删除数组的最后一个元素 一次只能删除一个
    // pop()没有参数
    // pop完毕之后 返回的结果是 删除的那个元素
    // 元素数组也会发生变化
    console.log(arr.pop());
    // shift 可以删除数组的第一个元素
    // shift()没有参数
    // shift完毕之后 返回的结果是 删除的那个元素
    // 元素数组也会发生变化
    console.log(arr1.shift());
    </script>

  1. 数组排序

    <script>
    // 数组排序
    var arr = [1,43,5,46,57,687,98,0,7];
    // 翻转数组
    arr.reverse()
    console.log(arr);
    // 冒泡排序
    arr.sort(function(a,b){
    // return a-b; // 正序
    return b-a; //倒叙
    })
    console.log(arr);
    </script>
  2. 数组索引方法

<script>
// 返回数组元素索引号的方法 indexOf(数组元素) 作用是返回该数组元素的索引号 从前面开始查找
// 它只返回一个满足条件的索引号
// 如果找不到元素 则返回-1
var arr = [1,3,5,6,7,8,9,9];
console.log(arr.indexOf(7));
// 返回数组元素索引号的方法 lastIndexOf(数组元素) 作用是返回该数组元素的索引号 从后面开始查找
console.log(arr.lastIndexOf(7));
</script>

方法名 说明 返回值
concat() 链接两个或多个数组,不影响原数组 返回一个新的数组
slice() 数组截取slice(begin,end) 返回被截取项目的新数组
splice() 数组删除splice(第几个开始,要删除个数) 返回被删除项目的新数组 注意,这个会影响原数组

字符串对象

  1. 基本包装类型

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

基本包装类型就是把简单的数据类型包装成为复杂的数据类型

<script>
// 基本包装类型
var str = 'study';
console.log(str.length);
// 对象 才有 属性 和方法 复杂数据类型才有属性和方法
// 基本包装类型, 就是把简单数据类型 包装成为了复杂数据类型
// 把简单数据类型包装为复杂数据类型
var temp = new String('study');
// 把临时变量的值 给str
str= temp;
// 销毁这个临时变量
temp = null;
console.log(str);
</script>
  1. 字符串不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中开辟了新的空间

  1. 根据字符返回位置

    字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串

    方法名 说明
    indexOf('要查找的字符',开始的位置) 返回指定内容在元字符串中的位置 如果找不到就返回-1,开始的位置是index的索引号
    lastIndexOf() 从后往前找,只找第一个匹配的
<script>
// 字符串对象 根据字符返回位置 str.indexOf('要查找的字符',[起始的位置])
var str = '我自去横刀向天笑,去留肝胆两昆仑';
console.log(str.indexOf('去'));
console.log(str.indexOf('去' ,2));
console.log(str.lastIndexOf('去'));
</script>
  1. 根据位置返回字符(*)

方法名 说明 使用
charAt(index) 返回指定位置的字符(index 字符串的索引号) str.charAt(0)
charCodeAt(index) 获取指定位置处字符的ASVLL码(index索引号) str.charCodeAt(0)
str[index] 获取指定位置处字符 HTML5,IE8+支持和charAt()等效

字符串操作方法

方法名 说明
concat(str1,str2,str3) concat()方法用于连续两个或者多个字符串。拼接字符串,等效于+ + 更常用
substr(start,length) 从start位置开始(索引号),length取的个数重点记住这个
slice(start,end) 从start位置开始 截取到end位置 end取不到(他们两都是索引号)
substring(start,end) 从start位置开始,截取到end位置end取不到 基本和slice 相同但是不接受负值

其他方法

方法名 说明
replace() 替换字符replace('被替换的字符','替换为的字符')他只会替换第一个字符
split() 字符串转换为数组split('分隔符')
<script>
// 替换字符replace('被替换的字符','替换为的字符')他只会替换第一个字符
var str = 'helloworld';
console.log(str.replace('he','ss'));
var str1 = 'qwertyuqwertyqwerty';
//将str1 中所有的q 转换为 *
while(str1.indexOf('q') !==-1){
str1 = str1.replace('q','*')
}
console.log(str1);
// 字符串转换为数组split('分隔符')
var str2 = "'red','blue','black'"
console.log(str2.split(','));
var str3 = "red&blue&black";
console.log(str3.split('&'));
// join将数组转换为字符串
var arr = [1,2,4,5,6,7,8];
console.log(arr.join());
</script>
posted @   maimai977977  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示