JS学习笔记

1、基本的数据类型

 

number(包含整型和浮点型)、null(空)、undefined(当函数没有返回值时打印)、Boolean、string。

 

2、常用函数

 

typeof 和Pythono中type函数功能一样,trim()函数和python的strip()函数功能一样。

 

NaN只要参与比较,结果一定是false。

 

 

比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.

比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.

 

3、创建字符串:

 

自动创建字符串对象:var str1="hello world";  调用字符串的对象属性或方法时自动创建对象,用完就丢弃

手工创建字符串对象:var str1= new String("hello word");  采用new创建字符串对象str1,全局有效

4、大小写转换

 

var str1 = "Lab";

var str2=str1.toLowerCase();   变成小写

var str3=str1.toUpperCase();  变成大写

5、获取指定字符

 

var str1 = "lab"

str1.charAt(index)       charAt返回index位置的字符

str1.charCodeAt(index) charCodeAt返回index位置的Unicode编码

6、定位字符元素

 

var str1 = "laal";

var str2=str1.indexOf("l");  只会定位第一个元素的位置

var str3=str1.lastIndexOf("l"); 只会定位最后一个元素的位置

7、截取子字符串

 

var str1 = "coconut"; 

str1.substr(start, length)  

str1.substring(start, end)

str1.slice(start, end)  和python的切片一样

8、字符串操作

 

var str1 = "coconut";

替换子字符串:str1.replace(findstr,tostr)

分割字符串:   str1.split(",")

连接字符串:str1.concat(addstr)  返回 str1+addstr

替换字子符串功能的拓展:格式化字符串

 

首先要知道在JS中字符串的方法例如 trim()、length()都是在 String.prototype方法中  (String原型类) 。

 

所以顺着这个思路进行重写

 

// 自定义一个方法

String.prototype.format = function (args) {

     console.log(this) // this指的是当前调用方法的对象

     var v = this.replace(/\{(\w+)\}/g,function (km,m) {  // km是匹配到的结果 m 是索引 如果加上分组m就是分组的值

     return args[m] // replace return什么匹配的位置就会被替换成什么

   });  // 这里写正则表达式 g代表全局表达式写在两个斜杠中间

  return v  // 将格式化的字符串返回

}

 

console.log("卓哥哥年龄{age}性别{gender}".format({"age":18,"gender":"男"}))

9、创建数组

 

赋值法:attr=[1,2,3]

attr1 = new Array(size)、  attr2=new Array(“msg”)  可以放长度,或者放数组的内容(不能是整型)

attr.join()  拼接字符串,和python 的一样,只不过是数组才能调用。拼接完后成了字符串

attr.concat()  拼接数组或着添加新元素,并不会修改原数组。

attr.sort(可以放函数)  排序  正数返回值大于0  负数小于0

attr.splice(start, length)  删除、  attr.splice(start,0,value...)   添加多个值

10、压栈、出栈

 

var str1 = [1,2,3,4,5];

str1.pop()  出栈   

str1.push(6)  压栈

str1.shift()  从头删除

str1.unshift(6)  从头添加 

11、创建函数:

 

在js中,执行js文件时会先加载所有的function 所以函数的调用写在哪里都可以,但是如果要是匿名函数,就只能乖乖的写在下面了。

 

new Function(参数1,...参数n,函数体);  过于繁琐一般不用。

函数的length属性是说明参数有几个。用arguments接受多个参数,类似python的*arg  , **kwarg。

 

但是用上这个函数就不一样了:

 

window.onload=function (){函数体}   页面加载完成时才执行的动作。

12、window对象下的方法

 

alert("msg")弹出警告框。 

 

prompt("msg")  返回值是输入的值,没有就是null。

 

confirm("msg")选择对话框  有一个返回Boolean值

 

open(url)打开一个窗口。

 

close(url)关闭一个窗口。

 

window["key"] = 123  这样key就是全局变量

 

setInterval(函数名,间隔时间)  每过几秒执行一次,定时器,返回一个定时器的名字

 

clearInterval(取消的定时器的名字)  取消有setInterval设置的timeout 

 

setTimeout(函数名,间隔时间)  在指定的时间后调用该函数 

 

clearTimeout()  取消有setTimeout设置的timeout

实现自动的时钟:

 

var clock;

function begin() {

    show_time();

    if (clock==null){  // 防止创建多把锁

        clock = setInterval(show_time,1000);

    }

 

}

function show_time() {

    var curr = new Date().toLocaleString();

    var id1 = document.getElementById("id1");

    id1.value=curr;

}

function che() {

    clearInterval(clock);  // 删除要把clock定义为undefined

    clock=undefined;

}

※ window.open()和window.location.href区别:

 

1、window.location.href="http://www.jb51.net";     //在同当前窗口中打开窗口

 

2、window.open("http://www.jb51.net");                 //在另外新建窗口中打开窗口

 

13、history对象:

 

back()返回上一个页面、后退 等价于  go(-1)。

go(num)跳转到指定的页面,正数向前找,负数向后找。

foward()前进 等价于 go(1)

14、location对象

 

assign(url)加载一个页面,直接跳转到url 

reload()刷新   

replace(url)用另一个页面替代另一个页面,这种情况下没有后退的功能,两个页面用的是同一个url

15、事件:存在一个默认的时间event。

 

e.preventDefault()阻止默认事件,会阻止时间发生的方式。

e.stoppropagation()阻止事件传播,小范围去绑定,去绑定小的范围。

阻止事件传播的例子:

 

<div id="div1" onclick="fun1()">

    <div id="div2" onclick="fun2()"></div>

</div>

<script>

    var ele1 = document.getElementById("div1");

    var ele2 = document.getElementById("div2");

    ele1.onclick = function () {

        alert("2333")

    }

    ele2.onclick = function (e) {

        alert("666");

        e.stopPropagation();

    }

</script>

当点击小范围时出现两个弹框,是因为没有阻止其事件传播,当阻止时间传播以后就会出现一个弹框。

 

※:补充一个oninput事件是当输入的时候每输入一个字符就会执行一次。

 

16、classList

 

标签名.classList 获取当前标签所有的类名 

标签名.classList.add("name")   往当前标签添加一个类名name

标签名.classList.remove("name")   从当前标签删除一个类名name

可以用来做遮罩层 :

 

所谓的遮罩层分为三个部分,第一部分就是网页的整个主体,第二部分就是遮罩层类似蒙上一层面纱通过透明度调整,第三部分就是弹出的对话框。当第一次进入该页面时,只显示第一部分,其他两部分不显示,通过触发某些事件来显示第二部分和第三部分。

 

ele.onclick=function () {

    big.classList.remove("hide");

    model.classList.remove("hide"); // 删除使其隐藏的类

}

   

btn.onclick = function () {

    big.classList.add("hide");

    model.classList.add("hide");  // 增加隐藏的类使其隐藏

}

17、循环

 

两种循环方式:

 

(1)、推荐用这种方式

 

    var attr = [1,2,3,4,5,6];

    for(var i=0;i<attr.length;i++){

        console.log(attr[i]);

    }

(2)、不推荐用这种方式, 因为会遍历出一些属性(length, item),会出现想象不到的错误。

 

    var attr = document.getElementsByTagName("li");

    for(var i in attr){

        console.log(i);

    }

18、异常

 

try { throw new Date(); }    // 抛出当前时间对象 

catch (e) { alert(e.toLocaleString()); }    // 使用本地格式显示当前时间

19、节点

 

ele.nextelementsibling    下一个兄弟元素  

 

ele.children    子节点

 

ele.parentElement      父母节点

 

ele.removechild(ele)      删除节点

 

ele.appendchild(ele)      添加节点

 

ele.replace(old,new)     替换节点。

※:  关于DOM下创建一个节点:

 

var attr1 = document.createElement("li").innerText = "666";   // 这样会创建不成功

 

var attr2 = document.createElement("li");    // 这样就会创建成功

attr2.innerText = "666";

关于div.appendChild is not a function  这个问题,真的是中了邪了,实际上当拿到多个div时就会报错,写成div[0].appendChild()就解决了。

 

a标签无动作:

 

<a href="javascript:void(0);">     //  表示一个死链接,void(0) 是一段javascript代码,返回值是undefined

20、this关键字

 

var name = "root";

var age = 18;

function Func(name,age){

    this.name = name;    // 在一个类函数中,this代表这个类的对象

    this.age = age;

    this.func = function(){

        console.log(this.age);   // 10086 

        console.log(this.name);  // pp

        function inner(){

            console.log(this.name);  // root   在一个函数中,this始终代表window对象

            console.log(this.age);   // 18

        }

        return inner();

    }

}

 

 

oop = new Func("pp",10086)

oop.func()

在JS中没有字典,只有对象。

 

21、JS中的自执行函数

 

(function () {   // 自执行函数

    function time(){

        alert("2019-05-04");

    }

 

    $.extend({"NB":function(){   // jquery 的自定义插件机制

            time();

        }

    })

})()

 

JS基础

  1. 程序:完成指定功能的指令;程序=数据结构+算法{创建者沃斯}

  2. 软件:一到多个程序的集合

  3. 计算机语言:跟计算机交流的语言;分三种:机器语言;汇编语言;高级语言高级语音2种:面向过程,面向对象。面向过程:写代码时像一个机器考虑每一步,自顶向下jie一步执行面向对象:更接近人类思维

  4. 引包:const readline = require("readline-sync")

  5. console.log("请输入一个数:");

  6. let number =readline.question()-0;##<span style="color:red">程序设计步骤:

  7. 需求分析

  8. 确定数据结构,算法

  9. 编码

  10. 调试测试

  11. 维护(修护BUG)##<span style="color:red">常见的程序相关错误类型

  12. 语法错误:容易避免

  13. 逻辑错误:符合语法逻辑有问题,得不到预期结果

  14. 运算错误:算法错误

  15. 开发错误:偏离需求##<span style="color:red">算法即:解决问题的方法和步骤

  16. 数值型算法:得到一个数字结果

  17. 非数值型算法:搜索结果等算法特征

  18. 确定性

  19. 有穷性:算法步骤有限

  20. 有0或多个输入

  21. 有1个或多个输出

  22. 有效性:每个步骤都能有效的执行算法表示方式

  23. 自然语言表示法:交换AB,由空瓶子C 转移AB实现交换

  24. 伪代码:s1:创建c;s2: a——>c;s3:b——>a;s4:c——>b

  25. N%6==0,代表数字N除以6余数为0

  26. JS:最初是一门依附在浏览器的脚本语言,从ES6变成通用语言JS和ECMAScript的关系:ECMAScript是语言标准,由JS实现

  27. JS版本:JS版本 和ECMAScript版本,只有mozille作为网景的精神延续使用JS组成部分

  28. 核心语法ECMAScript

  29. BOM:浏览器

  30. 模型

  31. DMO:文档对象模型JS基础语法

  32. 区分大小写(大小写敏感)

  33. 注释:单行斜线/,多行

  34. 语句以;结尾

  35. 标识符(变量名字)硬性要求:由数字,字母,下划线,不能用关键字,保留字软性要求:望文知意var number = 5;声明并赋值var number:声明变量varnumber =5, age =18, height =10;用,声明多个变量var的特点

  36. 支持重复声明;可以按着顺序对同一数值进行赋值;

  37. 重复声明但没赋值时会忽略声明;

  38. 遗漏声明不允许这样使用

  39. 变量中的值的类型可以更改;let的特点

  40. 不允许重复声明

  41. 被块级作用域限制{}##<span style="color:red">数据类型

  42. 基本数据类型(原始数据类型||简单值)

  43. 引用数据类型(合成数据类型||复杂值)

  44. <span style="color:red">typeof确认数据类型,typeof parseint(“123”),则自动表示123 Number

  45. 基础数据类型:undefined null number boolean string symbol

  46. 引用数据类型:objectundefined:声明的变量没赋值时,函数没有返回值;如果连声明都没有,则报错:变量没有定义;下列情况会返回undefined:1.访问未赋值的变量;2.任何被设置为undefined的变量;3.没有定义return表达式的函数;4.return里没有显式的返回任何内容5.访问不存在的对象属性null:空ECMA认为Undefined 是从null衍生出来的 console.log(undefined ==null):turn;undefined:有容器但是没赋值;null:什么都没有undefined:应该有值但是缺少值;null:啥都没有;boolean布尔值true false任何数据类型都可以转为布尔类型以下值会被转为false:

  47. 单双引号里是字符串模版内容${变量} 空字符串“”

  48. 0 -0

  49. NaN(Not a number)

  50. false

  51. null

  52. undefinednumber以下合法数字类型:

  53. 整数

  54. 浮点数 1.5

  55. 负数 -90

  56. NaN

  57. 科学技术法,1.23e2—> 1.23*100

  58. Infinity 无限大NaN

  59. NaN的数据类型是Number;

  60. 涉及到NaN的计算都是NaN;

  61. NaN不跟任何值相等,包括他自己;

  62. is NaN(内容)用于去判断内容是不是非数;<span style="color:red">string字符串##<span style="color:red">运算符数据类型运算符(操作符)

  63. 赋值运算符 =,+=,-=,*=,/=;a+=b为a=a+b;

  64. 自增自减,i++,i--,++i,--i;算法符号在前或者在后,就对应先自增自减或后自增自减再赋值,一般使用方法都是在内容中另起一行

  65. 逻辑运算符:与或非 and&& or|| not!

  66. 算术运算符;a=5,b="nihao",a+b=5nihao

  67. 逗号运算符 let a =1,b=2;

  68. 关系运算符 < > == ===,ASCII码==:值相等就行,除了NaN==NaN //false; ===全等值,数据类型也要相同

  69. 三目运算符 表达式1?表达式2:表达式3,判断1的真假,为真进行2,为假进行3let a=15,b=10; a < b? console.log("a<b");console.log("a>b")##数据类型转换:隐式 显式

  70. 隐式:console,log("11"<5);结果false;隐式"11"自动转换为number11.“”空字符串默认为0;true+1=2,true默认为1,false默认为0,null默认为0IF(“”)括号中只有不为空字符串,运行结果都为true

  71. 显式: parseint()转为整数形式,只读取整数,从字符串第一位开始解析到非数,如果第一位为非数字内容(非数)则返回NaNparsefloat()转为浮点数形式,能读取出小数点的数,从字符串第一位开始解析到非数,如果第一位为非数字内容(非数)则返回NaNNumber()整体分析,整数小数都分析,一旦有非数,返回NaNString()转为字符串特别题目console.log(1 == true);// 1 == 1 true;console.log(2 == true);// 2 == 1 false;console.log(typeof a;typeof typeof a);前者为number后者为typeof"number"为stringconsole.log(3<2<1);//3<2为false,"false"默认为0,则0<1为true;##<span style="color:red">流程控制流程控制语句(结构):顺序,选择,循环单分支:IFIF(条件){内容}条件为真,就进入If{}中双分支:简写方法为三目运算#####IF(条件){内容}else{内容} 两个分支只运行一个 switch (number){ case 1: case 2: case 3: console.log("春季"); break; case 4: console.log('秋季'); break;}在switch的复用及选中;##<span style="color:red">循环重复循环分类:for,while,do while;

  72. for(初始化;测试;递增){循环体 }#####例:for(let i=0;i<3;i++){ console.log(i); }

  73. while(取值范围){自增自减;}console.log(声明);

  74. do{循环体}while(条件)

  75. 打断循环:在条件后加上break;打断单次循环用continue;例:if(i=3){continue}单独打断i=3这个循环##<span style="color:red">Homework数据结构数据结构指计算机存储,组织数据的方式。最常见的就是数组,将数据[有序]的排列在一起。数组中每一个值成为元素item,元素在数组中有一个唯一的位置称为下标 ||索引 index下标取值从0开始

  76. 创建数组:let arr[];

  77. 构造函数:let arr=new ARRay();数组赋值:let arr=[0,"two",true];字符串数字都能使用 简单值和复杂值的比较:原始数据类型所占空间大小是固定的,存放在【栈】中,先进后出引用数据类型大小不固定,引用数据类型存放在【堆】中arr1=[1,2,3],arr2=[1,2,3];但是arr1不等于arr2,数据存放空间不是一样的。简单值比较是【值】的比较,复杂值是【址】的比较;

  78. arr.length读作:数组的长度;

  79. console.log(arr[0]);通过下标找到指定元素;遍历数组:

  80. for 通过下标;#####2. for of 遍历到每一个元素; let arr=["a","b","c",true,99]; for(let item of arr){ console.log(item); }#####3. for in 遍历到下标,效率低,通常用于遍历对象; let arr=["a","b","c",true,99]; for(let index in arr){ console.log(arr[index]); }#####4. forEach() 不能打断,传入一个回调函数; let arr=["a","b","c",true,99]; arr.forEach(function(item,index){ console.log(第${index}位的是${item}); })

  81. arr.push(item1,item2)在末尾添加元素

  82. arr.pop();删除末尾的元素;

  83. arr.shift();删除开头的元素;

  84. arr.unshift();在开头添加元素;

  85. arr.slice(startIndex,endindex);选中从开始元素到结尾元素前一位

  86. arr.splice(开始位置,用0或1表达是否删除,元素item名字)任意性的添加或者删除;

  87. arr.reverse()反转数组元素;

  88. 数组排序方法:arr.sort((a,b) =>a- b);从小到大排序;反之b-a从大到小;

  89. <span style="color:red">arr.concat concat() 方法用于连接两个或多个字符串

  90. ();数组拼接,两者合在一起;</span>

  91. arr.indexof()返回元素下标,说明元素在第几位,如果元素不存在,则返回-1;

  92. arr.indexof()与arr.lastindexof() 顺序查找||倒序查找;######16. 解构:复杂数据类型分解成简单数据类型let arr=[5,20,77]; let [a,b,c]=arr;[a,b,c]=[5,20,77];如果不想要某个值,可以设置为空的例:let[a,,c]=arr;得到5,77 ######17. 拓展运算符:let arr1=[1,2],arr2=[3,4];let newArr=[...arr1,...arr2];console.log(newArr);得到1,2,3,4 ######18. 分割符:let arr=[1,2,3,4,5];console.log(arr.join("-")); ######19. 传入分隔符:let str="hello ni";let arr=str.split("");console.log(arr);

##<span style="color:red">排序去重二维数组#####1. 多堆数组:由于JS数组中的数据可以是任意数据类型,所以也可以放入数组,即二维数组;#####例: let arr=[1,true,"a",["2-1","2-2"]]; console.log(arr3)#####2. 选择排序:#####选择排序 一个数与后面每一个数进行比较,交换 let arr = [2, 14, 10, 7, 66]; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { // 交换 let temp; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } console.log(arr);#####3. 冒泡排序:#####冒泡排序 两个相邻的数 let arr = [2, 14, 10, 7, 66]; for (let count = 1; count < arr.length; count++) { // 比较次数||轮数 for (let i = 0; i < arr.length; i++) { if (arr[i] > arr[i + 1]) { // i 是当前数, i+1 是下一个数 let temp; temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } } console.log(arr);#####4. 去重: let arr = [2, 2, 14, 10, 1, 7, 66, 14]; let newArr = []; for (let i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } console.log(newArr);##sort函数#####1. map()遍历数组并操作元素 7-2 let arr=[1,2,3,4]; let newarr = arr.map(function(item,index) {return item*2;}); console.log(newarr);newarr=[2,4,6,8];#####2. filter()过滤筛选满足条件的元素,会忽略掉undefined let arr=[1,2,3,4]; let newArr = arr.filter(function (item) { return item % 2 == 0; }); console.log(newArr);#####3. some()只要有一个满足条件的情况,结果为true#####every()只要有一个不满足条件的情况,结果为false let arr=[1,2,3,4]; let result = arr.some(function (item) { return item % 2 == 0; }); console.log(result);#####4. Set[快速去重] 集合,ES6新数据结构,类似于数组,里面不会包含重复值; let s = new Set([1,2,2,1,3,4,5,]); console.log(s); 快速去重: let arr=[1,2,3,1,2,4,5]; arr = [...new Set (arr)]; console.log(arr);#####5. size 属性 获取元素个数; let s= new Set([1,2,3,5]); console.log(s.size);#####6. 添加函数add;注意大写元素的开头字母 let s= new Set([1,2,3,5]); s.add("数值6"); console.log(s);// [1,2,3,5,6] 若要重复添加,add().add().add();#####7. 删除函数 delete(item); let s= new Set([1,2,3,5]); s.delete(3); console.log(s);// [1,2,5]#####8. 查询函数 hsa() 得到boolean值 console,log(s.has("数值"));#####9. 清空函数 clear; s.clear(); console.log(s); //[""];

  1. s.keys()和s.values() 键和值相同 entries()键值对;

#####11. Map() ES6新的数据结构 obj的键只能是string类型,但是Map()可以是任意类型; arr.map()//数组的方法; arr.Map()//新的数据结构;

  1. 函数function 方法; 目的:1.复用;2.维护;3.返回值,再做后续操作;4.团队开发;函数3要素:功能,参数,返回值;

声明式函数:function 函数名(目的){ ...函数体}#####例: fuction sayhello(){ console.log("hello"); } sayhello();

函数表达式:调用
 let fn = fuction(){功能
}; <br><br>
匿名函数—> IIFE 立即执行函数;
 function(){
console.log("我是匿名函数");}
();

#####13. 伪数组对象 arguments 计算实参个数

#####14. 参数:形式参数 ||实际参数;#####形参:声明时,想象成变量;#####实参:调用时,实际值; let introduce = function(name){ //形参 console.log('你好,我是${name}'); } introduce("名字");//实参#####15. 函数的返回值 return; let fn=function(){ let gift ="天线宝宝"; return gift; } let result =fn(); console.log(result); random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。 结束函数return 后面的语句不会被执行; 函数默认返回undefined; 只会返回一个内容,多个内容以数组形式返回;#####16. 不定参数(rest) 是数组; let fn=function(x,y,...rest){ console.log(x); console.log(rest); rest.push("xuyang"); console.log(rest); console.log(fn.length); } fn(1,"a",true);

#####17. 箭头函数 取代fuction; let fn=function(x){ console.log(x); } let fn=(x)=>{ console.log(x); } fn(9);如果只有一个形参 ()可以省略;如果只有一条return语句,()和return可省略;let fn =x => x; 即:接受形参x,再return x;#####18.var 变量提升脚本引擎解析变量,函数预解析var声明的变量,声明式函数fuction fn(){}提升代码顶部

只提升声明,不提升值
 var a;
console.log(a);
a= 10;

#####19. 函数提升:声明式函数function fn(){} function fn(){ console.log(内容); } fn();局部能访问全局变量,反之不行(全局不能访问函数内部的声明变量)

  1. 回调函数callback把函数A作为参数传给函数B,在函数B中调用这个函数A,函数A是回调函数;更多使用在异步编程;

例:
let fn1=function(){
console.log(`这是调用函数`);
}
let fn2=function(a){
a();
}
fn2(fn1);
  1. 递归递归函数就是指一个函数直接或者间接调用自己;

##JS对象数组是一组数据的【有序】集合,对象是【无序】集合对象拥有自己的属性和方法JS自带对象;array Set function 内置对象####1. 创建对象 表达式 let obj={}####例:对象属性所对应的值不是fuction,就把这条数据称为对象的属性 let obj={ name:"xuyang", gender:"male", };

查询||访问

console.log(boj.name);
console.log(obj["gender"]);

删除delete

delete obj.gender;
console.log(obj);

增加对象: 对象.key

obj.age=22;
console.log(obj);

name="xuyang":对应的键和值;###1.属性名=属性值,可以直接写属性值;obj.key=变量 同名,可以简写:例:

let obj={name:name}
let obj={name}

#<span style="color:red">新增数组对象:模板字符串拼接问题,变量不用${}例:

   let arrss={id:new_id, name:new_name, age:new_age, gender:new_gende}

###2. 遍历对象——键 let obj={ name:"xuyang", gender:"male", }; for(let key in obj){ console.log(obj[key]); }

###3. 对象的嵌套 let family={ peggy:{ name:"peggy", age:"22" } }; console.log(family.peggy.name);

###4. this 作为对象的方法,指向该对象 let obj={ name:"xuyang", gender:"male", say: function(){ console.log(this); } }; obj.say();

  1. JSON javascript object notation一种数据交换格式,不是编程语言,常被用于数据序列化,用于web服务间的信息交换MXL的内部规范太多<name>xuyang</name>###——JSON let obj={ "name":"xuyang", "gender":"male" };差别:

  2. 在JSON中,Key和string必须使用""

  3. 允许使用:number,boolean,null,array,object,"string"

  4. 不允许的值:undefined,function,symbol###例: let obj={ "name":"xuyang", "gender":"male" }; let str=JSON.stringify(obj); console.log(str, typeof str);####序列化obj 转换为str let result=JSON.parse(str); console.log(result, typeof result);反序列化str转换为obj###——Symbol基础数据类型,独一无二###创建Symbol let name=Symbol("name"); let obj={ name:"xuyang", gender:"male",

    }; let s1=Symbol(); console.log(s1, typeof s1); console.log(obj);注意Symbol这里S是大写###——string属性和方法 str.charAt(index) 传入index返回下标对应的字符; str.indexOf(item)传入元素返回下标; str.trim()去前后的空格,常用在用户登录注册 console.log(str.toUpperCase());转为大写 console.log(str.toLowerCase());转为小写

    let str="xuyang"; console.log(str.length); console.log(str.charAt(1)); console.log(str.indexOf("a")); console.log(str.trim()); console.log(str.toUpperCase()); console.log(str.toLowerCase());###——Math 静态对象不需要实例化对象,直接拿来用console.log(Math.ceil(number));向上取整console.log(Math.floor(number));向下取整console.log(Math.round(number));四舍五入

    let number=3.14; console.log(Math.ceil(number)); console.log(Math.floor(number)); console.log(Math.round(number));###——Data日期

    let timeobj=new Date(); let year=timeobj.getFullYear(); let month=timeobj.getMonth()+1; let day=timeobj.getDate(); let hour=timeobj.getHours(); let minute=timeobj.getMinutes(); let second=timeobj.getSeconds(); console.log(现在是${year}年${month}月${day}日${hour}时${minute}分${second}秒);###——disabled 禁用设置 disabled 属性是一个 boolean(布尔)值。 如果使用该属性,则会禁用按钮。 被禁用的按钮是无法使用和无法点击的。 xx.disabled=false; 表示失效 可以对 disabled 属性进行设置,使用户在满足某些条件时(比如选中复选框,等等)才能点击按钮。然后,可使用 JavaScript 来删除 disabled 属性,使该按钮变为可用的状态。###——包装类型

 

##<span style="color:red">reg正则表达式#####描述了一种字符串匹配的模式(规则)#####常用于表单验证#####构造函数: let reg = new RegExp("规则","模式修饰符");#####字面量: let reg=/规则/模式修饰符;例:

let reg=/a/i;  //验证字符串中是否包含a
let str="abc";
let result=reg.test(str);
console.log(result);

#####参数:#####模式修饰符:包含3种 1.g 全局 2.i 不区分大小写 3.m 多行#####正则组成部分: 1.定界符 //指定正则开始和结束 2.字符 // 3.元字符 有特殊含义的符号 4.模式修饰符#####元字符 1. 匹配任意字符,除了换行回车、行段分隔符 2. ()划分整体 3. []匹配中括号中任意一个字符 n选1 例: let reg=/[0-9]/; let str="1a"; console.log(reg.test(str)); 只要有一个符合条件就为true; test() 方法是一个正则表达式方法。 test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

4. {a,b}匹配最少a次最多b次 {1,5}某个字符至少出现1次,最多5次
5. [^]排除、 [^0-9]
6. ?匹配0或1次 {0,1}
7. *匹配0或多次 {0,}
8. +匹配1或多次 {1,}
9. |分割,等同于或者
10. ^脱字符 规定正则以XXX开头
11. $规定正则以XXX结束
例:
let reg=/^[0-9]{5}$/
表示仅限六位数字
12. 转义符\

#####简记:注意区分大小写,大写是取反 1. \d digit 匹配数字[0-9] 2. \w word 匹配数字字母下划线,不包含中文[a-zA-Z] 3. \s 4. space 匹配空白字符 空格换行\t\n\r

posted @ 2020-06-27 22:24  暗流丶  阅读(175)  评论(0)    收藏  举报