javascript 内置对象

javascript 中的对象分为3种: 自定义对象、内置对象、浏览器对象;

  • 内置对象: 就是JS自带的对象, 提供常用的属性和方法,帮助我们快速开发;

  • 常见内置对象: MathDateArrayString 等;

  • 查文档:MDN,地址:https://developer.mozilla.org/zh-CN/ 看去吧;


Math对象


Math不是构造函数,所以不用new,可以直接使用属性和方法;

Math.PI ,就是PI属性,直接用;

console.log(Math.PI);  //3.141592653589793

Math.max 取最大值;有非数字时返回NaN; 不带参数时返回:-Infinity;

console.log(Math.max(1,3,89));  //89
console.log(Math.max(23, 'a'));  // NaN 有非数字的,就返回NaN
console.log(Math.max()); // -Infinity  不带参数的结果;

Math.abs 取绝对值;

console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')) ; // 1  隐式转换
console.log(Math.abs('abc'));// NaN

Math.floor 向下取整;

console.log(Math.floor(1.9));  // 1
console.log(Math.floor(1.1));  // 1

Math.ceil 向上取整;

console.log(Math.ceil(1.1));  // 2
console.log(Math.ceil(1.9));  // 2

Math.round 四舍五入取整;

console.log(Math.round(1.1));  // 1
console.log(Math.round(1.9));  // 2
console.log(Math.round(-1.1));  // -1
console.log(Math.round(-1.5));  // -1 为负数时,往大里取;

Math.random 取随机数,伪随机数范围 [0,1)之间的浮点数;注意开闭区间;不用参数;

console.log(Math.random()); // 0.3607823740109528

习题:得到两个数之间的随机整数,包括这两个数在内;
公式: Math.floor(Math.random()*(max - min +1))+min;
代码:得到 [3-9]之间的随机整数;

console.log(Math.floor(Math.random()*(9-3+1))+3); 

封装:getRandom() 函数,得到[min-max]之间的随机整数;

function getRandom(min,max){
  return Math.floor(Math.random()*(max-min+1))+min;
}
console.log(getRandom(2,5)); // 生成 [2-5]之间随机数,包含2和5;

let arr = ['张三', '李四', '王五', '赵六', '马大骨'];  // 随机点名
console.log(arr[getRandom(0, arr.length -1)]);

/*猜数字游戏*/
let myNum = getRandom(0, 10);
console.log(myNum);
while (true) {
    let num = parseInt(prompt('请输入 0-10 之间数:'));
    if (num == myNum) {
        alert('对了');
        break;
    } else if (num > myNum) {
        alert('大了');
    } else {
        alert('小了');
    }
}

封装一个Math对象:myMath;

let myMath = {
    PI: 3.1415926,
    max: function() {
        let max = arguments[0];
        for (let i = 0; i < arguments.length; i++) {
            if (max < arguments[i]) {
                max = arguments[i];
            }
        }
        return max;
    }
}
console.log(myMath.PI); //3.1415926
console.log(myMath.max(2, 3, 4));  // 4

Date() 对象


日期对象,构造函数,必须要用 new 来创建对象,即实例化;

  • 不带参数,返回当前时间;
  • 带参数,常用字符串时间;
  • 基于1970年1月1日(标准时间)起的毫秒数;为啥是这个时间?
let myd1 = new Date();
console.log(myd1);  // Sun Nov 22 2020 16:34:30 GMT+0800 (中国标准时间)
let myd2 = new Date('2222-22-22 22:22:22');
console.log(myd2);  // Fri Feb 22 2222 22:22:22 GMT+0800 (中国标准时间)

格式化时间的方法

getFullYear()getMonth()getDate()getDay()getHours()getMinutes()getSeconds()

  • getMonth() 月份是从0开始计数,所以11月显示为10;
  • 星期一到星期六是:1-6;星期天是0;
let myd = new Date();
console.log(myd.getFullYear()); // 2020
console.log(myd.getMonth() + 1); // 10
console.log(myd.getDate()); // 22
console.log(myd.getDay()); // 0 -> 星期天
console.log(myd.getHours()); // 16
console.log(myd.getMinutes()); // 45
console.log(myd.getSeconds()); // 10

/*生成中文日期: 2020年5月1日 星期五*/
let year = myd.getFullYear();
let month = myd.getMonth() + 1;
let day = myd.getDate();
let week = myd.getDay();
let arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', ]
console.log('今天是:' + year + '年' + month + '月' + day + '日 ' + arr[week]);  // 今天是:2020年11月22日 星期天

/*封装时间:数字小于10时补0;*/
function myGetTime(time) {
    let hour = time.getHours();
    hour = hour < 10 ? '0' + hour : hour;
    let min = time.getMinutes();
    min = min < 10 ? '0' + min : min;
    let sec = time.getSeconds();
    sec = sec < 10 ? '0' + sec : sec;
    return '时间是:' + hour + ':' + min + ':' + sec;
}
console.log(myGetTime(myd));  // 时间是:17:02:47

得到毫秒数

valueOf()getTime()+new Date()Date.now()

代码演示实例:

let myd = new Date();
console.log(myd.valueOf()); // 1606037095639
console.log(myd.getTime()); // 1606037095639
let myd1 = +new Date();
console.log(myd1); // 1606037095639
console.log(Date.now()); // 1606037095639

倒计时实例:

function countDown(time) {
    let curTime = Date.now(); //  当前时间毫秒
    let iptTime = +new Date(time); // 输入时间毫秒
    let times = (iptTime - curTime) / 1000 // 时间差的秒数

    /*通过公式获得倒计时:天、时、分、秒*/
    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 + '秒';
}
/*注意字符串时间取值*/
console.log(countDown('2020-11-23 00:00:00'));  // 00天06时12分46秒

Array() 数组对象

创建数组的方法: 数组子面量、 利用new Array();

let arr =[1,2,3];
console.log(arr);

let arr1 = new Array(2); 
let arr2 = new Array(2,3); 

封装翻转数组的函数, 翻转数组的方法 reverse()

function reverseArr(arr) {
    let newArr = [];
    for (let i = arr.length - 1; i >= 0; i--) {
        newArr[newArr.length] = arr[i];
    }
    return newArr;
}
console.log(reverseArr([1, 2, 3, 4]));  // [4, 3, 2, 1]
console.log([1,2,3].reverse()); // [3,2,1]

检查是否是数组: instanceofArray.isArray()

console.log([1, 2, 3] instanceof Array);   // true
console.log(Array.isArray([1,2,3])); // true

添加删除数组元素: push()unshift()pop()shif()

  • push和unshift 添加数组元素,一个在后面添加,一个在前面,都返回数组长度;
  • pop和shif 删除数组元素,一个从后面删除,一个从前面,都返回删除的数组元素;
let arr = [1,2,3]; 
let num = arr.push(4,'Jack');

console.log(arr); // [1,2,3,4,'Jack']
console.log(num); // 5 返回新数组长度;

let num = arr.unshift('red','green'); 
console.log(arr); // ["red", "green", 1, 2, 3, 4, "Jack"]
console.log(num); // 7 返回新数组长度;

let tmp = arr.pop();
console.log(arr); // ["red", "green", 1, 2, 3, 4]
console.log(tmp); // Jack

let tmp = arr.shif();
console.log(arr); //  ["green", 1, 2, 3, 4]
console.log(tmp); // red

/*
工资数组: [1500,1200,1800,2000,2300,2800]
筛选工资少于2000的,并放在新数组
*/

let arr = [1500, 1200, 1800, 2000, 2300, 2800];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
    if (arr[i] < 2000) {
        newArr.push(arr[i]);
        // newArr[newArr.length] = arr[i];
    }
}
console.log(arr);
console.log(newArr);  // [1500, 1200, 1800]

数组排序(冒泡排序)

let arr = [2,3,1,5]
arr.sort(function(a,b){
  return a-b;  // 升序
  // return b-a; // 降序
})
console.log(arr); // [1, 2, 3, 5]

数组索引: indexOf()lastIndexOf()

let arr = [2, 3, 1, 5, 3]
console.log(arr.indexOf(3));  //  1 返回第一个索引;
console.log(arr.indexOf(6));  // -1 找不到的话,返回-1;

console.log(arr.lastIndexOf(3)); // 4 从后面查;

数组实例: 封装数组去重函数; unique()

function unique(arr) {
    let newArr = [];
    for (let i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) == -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
let arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
/*  let arr = ['blue','green','blue']; */
console.log(unique(arr));  // ["c", "a", "z", "x", "b"]

数组转字符串: toString()join()

let arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
console.log(arr.toString());  // c,a,z,a,x,a,x,c,b
console.log(arr.join('-')); // c-a-z-a-x-a-x-c-b

String() 对象


基本包装类型:把简单类型包装成复杂数据类型;
字符串的不可变性:看上去内容可变,其实是地址变了,内存中新开辟了内存空间;

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

/* 以上代码等同于 */
let tmp = new String('andy');  
str = tmp;   // 临时变量给str
tmp = null;  // 销毁tmp

查找字符串: indexOf()lastIndexOf()

let str = 'hello'; 
console.log(str.indexOf('e')); // 1

/* 判断o出现的位置和总次数*/
let str = 'adolkjolwoawfo';
let index = str.indexOf('o');
let num = 0;
while (index != -1) {
    console.log(index);
    num++;
    index = str.indexOf('o', index + 1);
}
console.log('共出现次数:' + num);

/* 
把字符串换成数组与一样
例如:['red','blue','red','green','red']
查询 'red' 出现的位置和总次数
*/

根据位置返回字符: charAt(index)charCodeAt(index)str[index]

  • charCodeAt(index) 返回索引号字符的ASCII值,可以判断用户按下的哪个键 ;
let str = 'andy';
console.log(str.charAt(3));  // y
console.log(str.charCodeAt(0));  // 97
console.log(str[0]);   // a

for (let i = 0; i < str.length; i++) {
    console.log(str.charAt(i));
}

/* 把数组中的字符与出现的次数存为对象,取出出现次数最多的 */
let str = 'adolkjolwoawfo';
let o = {};
for (let i = 0; i < str.length; i++) {
    let chars = str.charAt(i);
    if (o[chars]) {
        o[chars]++;
    } else {
        o[chars] = 1;
    }
}
console.log(o);  // {a: 2,d: 1,f: 1,j: 1,k: 1,l: 2,o: 4,w: 2 ... }


let max = 0; // 出现次数;
let ch = '' // 对应字符;
for (let key in o) {
    if (o[key] > max) {
        max = o[key];
        ch = key;
    }
}
console.log(max);
console.log('出现最多的是:' + ch);

实例截图:


image.png

字符串操作: concat()substr()replace()split()toUpperCase()toLowerCase()

let str = 'hello';
console.log(str.concat(' world'));  // hello world
console.log(str.substr(2, 2));  //  ll  从第2个位置,取2个;
console.log(str.replace('l', '*')); // he*lo , 只能替换一个字符;

while (str.indexOf('l') != -1) {
    str = str.replace('l', '*');
}
console.log(str);  // he**o  使用循环替换

let str = 'red,blue,gree';
console.log(str.split(',')); // ["red", "blue", "gree"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容