js进阶二内建对象:Math,Date,String,Array,FileReader,RegExp

线程机制和事件机制

  • 应用程序必须运行在某个进程的某个线程上

  • 一个进程中至少有一个运行的线程: 主线程, 进程启动后自动创建

  • 一个进程中也可以同时运行多个线程, 我们会说程序是多线程运行的

  • 一个进程内的数据可以供其中的多个线程直接共享

  • 多个进程之间的数据是不能直接共享的

线程池(thread pool): 保存多个线程对象的容器, 实现线程对象的反复利用

执行流程

  • 执行初始化代码, 将事件回调函数交给浏览器对应模块管理

  • 当事件发生时, 管理模块会将回调函数及其数据添加到回调列队中

  • 只有当初始化代码执行完后(可能要一定时间), 才会遍历读取回调队列中的回调函数执行

内建对象

Date

var d = new Date();

//年份全都写四位,避免歧义
//字符串格式:月份/日/年份 时:分:秒
var d2 = new Date("11/23/2003 14:20:00");

方法

getDate()
获取当前时间对应的几号
getDay()
获取日期对应的周几
  • 0 表示 周日
  • 1 表示周一
getMonth()
获取对应的月份
  • 0 表示 一月
  • 1 表示二月
getFullYear()
获取对应的年份
getTime()
获取对应的时间戳

Date.now()

获取当前时间戳

Math

Math.abs()

取绝对值

Math.ceil()

向上取整,小数点后的值都向上进

Math.floor()

向下取整

Math.round()

四舍五入

Math.random()

获取0-1之间的随机数
 //生成 0 - x 之间的随机数
 Math.round(Math.random()*x)

//生产一个 x - y之间的随机数
Math.round(Math.random()*(y-x) + x)

Math.max()

获取多个值中的最大值

Math.min()

获取多个值中的最小值

Math.sqrt()

对一个数进行开方运算

Math.pow(x,y)

求x的y次幂

String

属性

length

方法

charAt()
根据索引获取指定位置的字符
charCodeAt()
根据索引获取指定位置的字符的字符编码
fromCharCode()
根据字符编码获取字符
indexOf() / lastIndexOf()
查找指定内容在字符串中的位置
  • 如果找到了,则返回第一次出现的索引,如果没找到则返回-1

  • indexOf是从前往后找,而lastIndexOf是从后往前找

参数
  • 第一个:查找的内容string类型

  • 第二个:查找的开始位置

slice()
截取一个字符串
参数:
  • 第一个:截取开始位置的索引(包括开始位置)

  • 第二个:截取结束位置的索引(不包括结束位置)

  • 索引可以是负值,如果是负值则从后往前计算

  • 第二参数可以省略,如果不写则一直截取到最后

substring()
可以用来截取一个字符串
参数:
  • 第一个:截取开始位置的索引(包括开始位置)

  • 第二个:截取结束位置的索引(不包括结束位置)

  • 索引值不能为负,如果为负,则默认使用0

  • 如果第一个参数大于第二个,则自动交换位置

  • 第二参数可以省略,如果不写则一直截取到最后

substr()
可以用来截取字符串
参数:
  • 第一个:截取开始位置的索引(包括开始位置)

  • 第二个:截取的个数

  • 索引可以是负值,如果是负值则从后往前计算

  • 第二参数可以省略,如果不写则一直截取到最后

toLowerCase()
把字符串转换为小写
toUpperCase()
把字符串转换为大写
match()
从一个字符串中将符合要求的内容提取出来
  • 需要一个正则表达式作为参数,将会根据该正则表达式去字符串中提取内容

  • 将其提取到的内容,封装到一个数组中返回

search()
去一个字符串中搜索指定的内容
  • 如果找到了,则返回内容第一次出现的索引,如果没找到则返回-1

  • 需要一个正则表达式或字符串作为参数,会去字符串中搜索对应的内容

split()
根据指定的内容将一个字符串拆分为一个数组
  • 需要一个字符串或正则表达式作为参数,将会根据该内容对字符串进行拆分
replace()
将字符串中的指定内容替换为新的内容
参数:
  • 第一个参数,被替换的内容或正则表达式

  • 第二个参数,新的内容

包装类

String()

Boolean()

Number()

当我们去使用一个基本数据类型的属性,或是调用一个基本数据类型的方法时
JS解析器会临时将基本数据类型包装为一个对象,然后去操作这个对象的属性或方法
操作完成以后将对象立即销毁

FileReader 文件读取

var fileReader = new FileReader();

fileReader.readAsDataURL(obj);

读取图片文件

fileReader.readAsText(obj);

读取文本文件

fileReader.onload 事件

input选取文件读取
<!--multiple = multiple 设置之后可以选择多个文件-->
<input id="readFile" type="file" multiple = multiple>

<script type="text/javascript">

var readFileDom = document.querySelector("#readFile");
var bodyDom = document.querySelector("body");

//监听input的onchange事件
readFileDom.onchange = function (ev) {

    //获取到选取的所有文件
    var filesArr = ev.target.files;
    
    //遍历所有文件
    for (var i = 0; i < filesArr.length; i++) {
        var obj = filesArr[i];
        //文件类型判断
        if (obj.type.indexOf("image")>-1) {
            setimg();
        }
    }
    
    function setimg() {
        
        //注意fileReader变量作用域问题,提取到一个函数中,保证不会被覆盖
        var fileReader = new FileReader();
        fileReader.readAsDataURL(obj);
        fileReader.onload = function (ev) {
            var imgDom = document.createElement("img");
            imgDom.src = fileReader.result;
            bodyDom.appendChild(imgDom);
        }
    }
}

Array数组

var arr = new Array();
var arr =[1,"你好",true,[1,3,2],obj ];

可保存任意类型的对象,也可以是数组

方法

添加元素
push()
  • 该方法可以用来向数组的末尾添加新的元素,并返回数组的新的长度

      var result = arr.push("唐僧","白骨精","蜘蛛精");
    
unshift()
  • 向数组的最前边添加元素,并返回新的长度

      result = arr.unshift("牛魔王","铁扇公主");
    
删除元素
pop()
  • 用来删除并返回数组的最后一个元素

  • 元素删除以后,会自动修正数组的长度

      result = arr.pop();
    
shift()
  • 删除数组最前边的元素,并返回被删除的元素

  • 删除完元素以后,会自动调整数组的长度

      result = arr.shift();
    
修改元素
splice()

####### 删除指定位置的元素,并添加新元素

  • 它会影响到原数组,一旦执行原数组中的元素将会被删除
  • 参数:
  • 第一个参数,开始位置的索引

  • 第二个参数,表示删除的个数

  • 第三个参数,这个方法还可以传递多个参数

  • 在第三个参数以后,可以跟多个元素作为参数,

  • 这些元素将会被插入到开始位置之前的位置

  • 它会将被删除的元素作为返回值返回

      arr = ["孙悟空","猪八戒","沙和尚","唐僧"]; 
      result = arr.splice(0,1);
      //牛魔王替换 索引为0的元素
      result = arr.splice(0,1,"牛魔王");
      arr.splice(2,2,"牛魔王","红孩儿","二郎神");
    

截取元素

slice(起始位置,结束位置)
  • 参数:
  • 第一个参数,截取开始的位置(包括开始的位置)
  • 第二个参数,截取结束的位置(不包括结束的位置)
  • 该方法不会影响到原数组,而是将截取到的内容封装为一个新的数组返回
  • 可以传递一个负数作为参数,如果是负数,则从后往前数
  • -1 表示 倒数第一
  • -2 表示 倒数第二
  • 如果省略第二个参数,则从开始位置一直截取到最后

遍历数组

通过for方法每个获取并取值
通过forEach()方法
需要一个函数作为参数来接收遍历的元素,索引,数组对象
forEach()方法不支持IE8及以下的浏览器,所以如果需要兼容IE8则不要使用
  • forEach()中的回调函数,由浏览器调用,
  • 数组中有几个元素函数就会被调用几次,

  • 每次遍历到一个元素都会调用一次函数,浏览器会通过实参的形式来将遍历到内容传递进函数

  • 浏览器在调用回调函数传递了三个实参:

  • 第一个参数:正在遍历的元素

  • 第二个参数:正在遍历的元素的索引

  • 第三个参数:正在遍历的数组对象

    arr.forEach(function(value , index , obj){
            
    console.log("value = "+value + "  index = "+index+" obj = "+obj);
            
        });
    

正则表达式

创建

var reg = new RegExp("正则表达式","匹配模式");
var reg = /正则表达式/匹配模式;

表达规则

方法

test()

检测一个字符串,返回true/false
var rgb = /[a-z0-9]/;
console.log(rgb.test("a-c-"));

匹配模式

i

忽略大小写

g

全局检查

语法

 |      表示或 (a|b)

 []     表示或 [ab]  a[bcd]g

 [^ ]   除了

 [a-z]  小写字母

 [A-z]  任意字母

 [0-9]  任意数字

 {n}    正好n次

 {m,n}  m-n次

 {m,}   至少m次

  +     至少一次,相当于{1,}

  *     任意次,相当于{0,}

  ?     0到1次,相当于{0,1}

  ^     表示开头

  $     表示结尾
  .     表示任意字符


 \      转义字符

 \.     表示.

 \\     表示\

 \w     任意的字母、数字、下划线 [A-z0-9_]

 \W     除了字母、数字、下划线 [^A-z0-9_]

 \d     任意的数字

 \D     除了数字

 \s     空格

 \S     除了空格

 \b     单词边界

 \B     除了单词边界

var reg = /\bchild\b/;
reg.test("lalalchildllall");false
reg.test("child lalal");true

//去除前后多余的空格
var reg = /^\s* | \s*$/g;
var str = "         na  me     ";
var newStr = str.replace(reg,"");

//
字符串定义的时候
检查字符串是否有\
var reg = new RegExp("\\\\");
var reg = /\\/;
console.log(reg.test("lalal\lalal"));
\在字符串中也是转义字符

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

推荐阅读更多精彩内容

  • 第五章******************************************************...
    fastwe阅读 681评论 0 0
  • 第一部分:快速入门JS学习中的一些注意点:2018.8.16基础知识: 入门JavaScript是世界上最流行的脚...
    天山雪莲_38324阅读 543评论 0 1
  • string Math Array Date方法 浏览器对象 最基础的增删改查 以及JS的小练习 对象 创建...
    洱月阅读 384评论 1 6
  • js简介 Js是一种基于事件和对象驱动的解释性、松散性的语言。 一切皆对象 javascript 布兰登艾奇 ...
    塔库纳玛哈哈阅读 1,206评论 0 2
  • 原创声明 本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:笔名:来碗鸡蛋面简书主页:ht...
    来碗鸡蛋面阅读 3,199评论 0 4