13、内置对象

13、内置对象

1.内置对象

​ JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象
​ 前面两种对象是JS 基础内容,属于 ECMAScript;第三个浏览器对象属于 JS 独有的, JS API 讲解内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法),可以帮助我们快速开发

  • JavaScript 提供了多个内置对象:Math、 Date 、Array、String等,可以通过查文档学习
  • Mozilla 开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括 HTML、CSS 和万维网及 HTML5 应用的 API。
  • MDN:https://developer.mozilla.org/zh-CN/

2. Math对象

Math 对象不是构造函数,它具有数学常数和函数的属性和方法。

Math 对象不需要new来调用 ,直接使用里面的属性和方法即可

Math 中的成员可以实现数学相关的运算(求绝对值,取整、最大值等)

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

​ 注意:上面的方法使用时必须带括号

// 利用对象封装自己的数学对象  里面有 PI 最大值和最小值
        var myMath = {
            PI: 3.14,
            max: function() {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function() {
                var min = arguments[0];
                for (var i = 1; i > arguments.length; i++) {
                    if (arguments[i] > min) {
                        min = arguments[i];
                    }
                }
                return min;
            }

        }
        console.log(myMath.PI);
        console.log(myMath.max(1, 5, 9));
        console.log(myMath.min(1, 5, 9));
 // 绝对值方法
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')); 
// 隐式转换 会把字符串型 -1 转换为数字型
console.log(Math.abs('pink')); // NaN 
 // 三个取整方法
 // (1) Math.floor()   地板 向下取整  往最小了取值
  console.log(Math.floor(1.1)); // 1
  console.log(Math.floor(1.9)); // 1
 // (2) Math.ceil()   ceil 天花板 向上取整  往最大了取值
  console.log(Math.ceil(1.1)); // 2
  console.log(Math.ceil(1.9)); // 2
 // (3) Math.round() 四舍五入  (.5 特殊 它往大了取) 
  console.log(Math.round(1.1)); // 1
  console.log(Math.round(1.5)); // 2
  console.log(Math.round(1.9)); // 2
  console.log(Math.round(-1.1)); // -1
  console.log(Math.round(-1.5)); // 这个结果是 -1
// 获取指定范围内的随机整数
// random()注意后面不跟参数 返回一个随机的小数 0 =< x < 1
function getRandom(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min; 
}
// (1)得到两个数之间的随机整数 并且包含这2个整数
function getRandom(min, max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
        }
     console.log(getRandom(1, 10));
// (2)随机点名
var arr = ['liming', 'zhangsan', 'qinrui'];
console.log(arr[getRandom(0, arr.length - 1)]);
// 猜数字游戏
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;

        }
        var random = getRandom(1, 50);
        for (var i = 1; i <= 10; i++) {
            var num = prompt('请输入数字');
            if (num > random) {
                alert('你猜大了');
            } else if (num < random) {
                alert('你猜小了');
            } else {
                alert('你好帅哦,猜对了');
                break; // 退出整个循环结束程序
            }
        }

3.Date日期对象

​ Date 对象和 Math 对象不一样,Date是一个构造函数,必须使用new实例化后才能使用其中具体方法和属性。Date 实例用来处理日期和时间

// new实例化创建对象
var arr = new Array(); // 创建一个数组对象
var obj = new Object(); // 创建了一个对象实例

3.1 使用Date实例化日期对象

  • 如果没有参数 返回当前系统的当前时间
var now = new Date();
  • 获取指定时间的日期对象
  • 参数常用的写法: (1)数字型 2021, 10, 01 (2)字符串型 ‘2021-10-1 8:8:8’
 var date1 = new Date(2022, 10, 1);
        console.log(date1); // 注意返回的是 11月 不是 10月 
var date2 = new Date('2022-10-1 8:8:8');
        console.log(date2);

3.2 使用Date实例的方法和属性

// 格式化日期 年月日 
        var date3 = new Date();
        console.log(date3.getFullYear()); // 返回当前日期的年  
        console.log(date3.getMonth() + 1); // 月份(0-11)
        console.log(date3.getDate()); // 返回的是几号
        console.log(date3.getDay()); // 返回周几,周日返回的是 0
        // 2021年 9月 7日 星期二
        var date4 = new Date();
        var year = date4.getFullYear();
        var month = date4.getMonth() + 1;
        var dates = date4.getDate();
        var arr2 = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date4.getDay();
        console.log('今天是' + year + '年' + month + '月' + dates + '日' + arr2[day]);

 // 格式化日期 时分秒
        var date5 = new Date();
        console.log(date.getHours()); // 时
        console.log(date.getMinutes()); // 分
        console.log(date.getSeconds()); // 秒
        // 要求封装一个函数返回当前的时分秒 格式 08:08:08
        function getTimer() {
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTimer());

3.3 通过Date实例获取总毫米数

  • 总毫秒数的含义

    现在距离1970年1月1号(世界标准时间)过了多少毫秒数

  • 获取总毫秒数

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

     // 倒计时写法
            function countDown(time) {
                var nowTime = +new Date();
                var inputTime = +new Date(time);
                var newTime = (inputTime - nowTime) / 1000;
                var d = parseInt(newTime / 60 / 60 / 24);
                d = d < 10 ? '0' + d : d;
                var h = parseInt(newTime / 60 / 60 % 24);
                h = h < 10 ? '0' + h : h;
                var m = parseInt(newTime / 60 % 60);
                m = m < 10 ? '0' + m : m;
                var s = parseInt(newTime % 60);
                s = s < 10 ? '0' + s : s;
                return d + '天' + h + '时' + m + '分' + s + '秒';
            }
            console.log(countDown('2021-10-1 18:00:00'));
    

4. 数组对象

4.1 创建数组的两种方式

(1)字面量方式

  • 示例代码如下:

    var arr = [1,"test",true];
    

(2)new Array()

  • 参数传递规则如下:

    如果只传入一个参数,则参数规定了数组的长度

    如果传入了多个参数,则参数称为数组的元素

    示例代码如下:

    var arr1 = new Array();  
    // 创建了一个空的数组
    var arr1 = new Array(2); 
    // 这个2表示数组的长度为2,里面有2个空的数组元素 
    var arr1 = new Array(2, 3); 
    // 等价于 [2,3],这样写表示里面有2个数组元素2和3
    

4.2 检测是否为数组

  • instanceof 运算符 可以判断一个对象是否是某个构造函数的实例

    var arr = [1, 23];
    var obj = {};
    console.log(arr instanceof Array); // true
    console.log(obj instanceof Array); // false
    
  • Array.isArray()用于判断一个对象是否为数组, H5新增的方法

    var arr = [1, 23];
    var obj = {};
    console.log(Array.isArray(arr));   // true
    console.log(Array.isArray(obj));   // false
    
  • 翻转数组案例

     function reverse(arr3) {
          // if (arr2 instanceof Array){
          if (Array.isArray(arr3)) {
               var newarr = [];
             for (var i = arr3.length - 1; i >= 0; i--) {
               newarr[newarr.length] = arr3[i];
                    }
                 return newarr;
                } else {
              return 'error 这个参数要求必须是数组格[1,2,3]'
    
                }
            }
            console.log(reverse([1, 2, 3]));
            console.log(reverse(1, 2, 3));
    

4.3 添加删除数组元素的方法

  • 数组中有进行增加、删除元素的方法,部分方法如下表

    注意:push、unshift为增加元素方法;pop、shift为删除元素的方法

     // 1. push() 在数组的末尾添加一个或者多个数组元素
    var arr4 = [1, 2, 3];
    arr.push(4, 'pink'); // push() 参数直接写 数组元素 
    console.log(arr4.push(4, 'pink')); // 5 push完之后返回的结果是 新数组的长度
    console.log(arr4); // 原数组会发生变化
    // 2. unshift 在数组的开头添加一个或者多个数组元素
    console.log(arr4.unshift('red', 'purple')); // 7
    console.log(arr4);
    // 3. pop() 删除数组的最后一个元素  
     console.log(arr4.pop()); // pop没有参数,返回删除的元素
     console.log(arr4);
    // 4. shift() 它可以删除数组的第一个元素  
    console.log(arr4.shift());
    console.log(arr4);
    
    //案例:把数组[1500, 1200, 2000, 2100, 1800]中超过2000的删除,剩余的放到新数组里面
            var arr5 = [1500, 1200, 2000, 2100, 1800];
            var newArr = [];
            for (var i = 0; i < arr5.length; i++) {
                if (arr5[i] < 2000) {
                    // newArr[newArr.length] = arr5[i];
                    newArr.push(arr5[i]);
                }
            }
            console.log(newArr);
    

4.4 数组排序

  • 数组中有对数组本身排序的方法,部分方法如下表

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

    • 如果传入“function(a,b){ return a-b;}”,则为升序
    • 如果传入“function(a,b){ return b-a;}”,则为降序
// 1. 翻转数组
        var arr6 = ['pink', 'red', 'blue'];
        arr6.reverse();
        console.log(arr6);
// 2. 数组排序(冒泡排序)
        var arr7 = [1, 3, 4, 5, 6, 88, 7, 54];
        arr7.sort(function(a, b) {
            //  return a - b; 升序的顺序排列
            return b - a; // 降序的顺序排列
        })
        console.log(arr7);

4.5 数组索引方法

  • 数组中有获取数组指定元素索引值的方法,部分方法如下表

// indexOf(数组元素):返回第一个满足条件的索引号 从前面开始查找 找不到返回 -1
        var arr8 = ['red', 'green', 'blue', 'pink', 'blue'];
        console.log(arr8.indexOf('blue')); // 2
// lastIndexOf(数组元素) :返回该数组元素的索引号 从后面开始查找 找不到返回 -1
        console.log(arr8.lastIndexOf('blue')); // 4
// 数组去重:遍历旧数组,将数组元素存入新数组,如若重复就不在存入
        function unique(arr) {
            var newarr1 = [];
            for (var i = 0; i < arr.length; i++) {
                if (newarr1.indexOf(arr[i]) === -1) {
                    newarr1.push(arr[i]);
                }
            }
            return newarr1;
        }
        var demo = unique(['blue', 'green', 'blue'])
        console.log(demo);

4.6 数组转换为字符串

  • 数组中有把数组转化为字符串的方法,部分方法如下表

    注意:join方法如果不传入参数,则按照 “ , ”拼接元素

    // 1. toString() 将我们的数组转换为字符串
          var arr = [1, 2, 3];
          console.log(arr.toString()); // 1,2,3
    // 2. join(分隔符) 
          var arr1 = ['green', 'blue', 'pink'];
          console.log(arr1.join()); // green,blue,pink
          console.log(arr1.join('-')); // green-blue-pink
          console.log(arr1.join('&')); // green&blue&pink
    

数组中还有其他操作方法,可以通过查文档学习

5. 字符串对象

​ 字符串具有不可变性,重新赋值是重新开辟了空间去存储,因此不可大量拼接字符串,会有效率问题

5.1 基本包装类型

​ 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean。

​ 按道理基本数据类型是没有属性和方法的,基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。其执行过程如下 :

var str = 'andy';
console.log(str.length);
 // 步骤:
 // (1) 把简单数据类型包装为复杂数据类型 
 var temp = new String('andy');
 // (2) 把临时变量的值 给 str
 str = temp;
 // (3) 销毁这个临时变量
 temp = null;

5.2 根据字符返回位置

​ 字符串通过基本包装类型可以调用部分方法来操作字符串,以下是返回指定字符的位置的方法:

// 字符串对象根据字符返回位置
// str.indexOf('要查找的字符', [起始的位置])
        var str1 = '改革春风吹满地,春天来了';
        console.log(str1.indexOf('春'));
        console.log(str1.indexOf('春', 3)); 
        // 从索引号是 3的位置开始往后查找
// 案例:查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
        var str2 = 'abcoefoxyozzopp';
        var index = str2.indexOf('o');
        var num = 0;
        while (index != -1) {
            console.log(index);
            num++;
            index = str2.indexOf('o', index + 1);

        }
        console.log('出现的次数是' + num);

5.3 根据位置返回字符

​ 字符串通过基本包装类型可以调用部分方法来操作字符串,以下是根据位置返回指定位置上的字符:

​ 在上述方法中,charCodeAt方法返回的是指定位置上字符对应的ASCII码,ASCII码对照表如下:

// 根据位置返回字符
// 1. charAt(index) 根据位置返回字符
   var str3 = 'andy';
   console.log(str3.charAt(3));
   // 遍历所有的字符
    for (var i = 0; i < str3.length; i++) {
            console.log(str3.charAt(i));

        }
// 2. charCodeAt(index)  根据位置返回相应索引号的字符ASCII值 
// 目的: 后期开发可以用来判断用户按下了哪个键 
       console.log(str3.charCodeAt(0)); // 97
// 3. str[index] H5 新增的
        console.log(str3[0]); // a
// 判断对象里是否有该属性 对象['属性名']
        var o = {
            age: 18,
        }
        if (o['sex']) {
            console.log('有');

        } else {
            console.log('无');

        }
//判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,统计其次数
// 1. 利用 charAt() 遍历这个字符串
// 2. 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
// 3. 遍历对象,得到最大值和该字符 	
//	注意:在遍历的过程中,把字符串中的每个字符作为对象的属性存储在对象总,对应的属性值是该字符出现的次数
        var str4 = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str4.length; i++) {
            var chars = str4.charAt(i);
            if (o[chars]) {
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        console.log(o);
        var max = 0;
        var ch = '';
        for (var k in o) {
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        console.log(max);
        console.log(ch);

5.4 字符串操作方法

(1) 字符串通过基本包装类型可以调用部分方法来操作字符串

以下是部分操作方法:

// concat('字符串1','字符串2'....)
 var str5 = 'andy';
 console.log(str5.concat('red'));
 
// substr('截取的起始位置', '截取几个字符');
  var str6 = '改革春风吹满地';
  console.log(str6.substr(2, 2));

(2) replace() 方法用于在字符串中用一些字符替换另一些字符

其使用格式如下:

字符串.replace(被替换的字符串, 要替换为的字符串)var str7 = 'andyandy';
console.log(str7.replace('a', 'b'));
// 有一个字符串 'abcoefoxyozzopp'  要求把里面所有的 o 替换为 *
        var str8 = 'abcoefoxyozzopp';
        while (str8.indexOf('o') !== -1) {
            str8.replace('o', '*');
        }
        console.log(str8);

(3) split()方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。 前面学过 join 把数组转换为字符串

​ 其使用格式如下:

字符串.split("分割字符")
var str9 = 'red, pink, blue';
console.log(str2.split(','));
var str10 = 'red&pink&blue';
console.log(str3.split('&'));

ascript
字符串.replace(被替换的字符串, 要替换为的字符串);
var str7 = ‘andyandy’;
console.log(str7.replace(‘a’, ‘b’));


```javascript
// 有一个字符串 'abcoefoxyozzopp'  要求把里面所有的 o 替换为 *
        var str8 = 'abcoefoxyozzopp';
        while (str8.indexOf('o') !== -1) {
            str8.replace('o', '*');
        }
        console.log(str8);

(3) split()方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。 前面学过 join 把数组转换为字符串

​ 其使用格式如下:

字符串.split("分割字符")
var str9 = 'red, pink, blue';
console.log(str2.split(','));
var str10 = 'red&pink&blue';
console.log(str3.split('&'));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值