…
常用输出方式 1 2 3 4 5 6 7 8 window .alert ()document .write ()document .getElementById ("demo" ).innerHTML ="" console .log ()
数据类型 值类型包含 - 字符串,数字,布尔,空,未定义,Symbol。 引用类型包含 - 对象,数组,函数。
值类型 1 2 3 4 5 6 7 8 9 10 11 12 var y = null ; var x; var x = 5 ; var x = 34.00 ;var x = Infinity ; var x = 123e5 ;var x = 100 / "abc" ;isNaN (x) var x = "John" ; var x = 'John' ; var x = true ;var x = false ;
运算符:
加减乘除
取余
自增
自减
等于
绝对等于,包含类型检查
不等于
绝对不等于
比较运算
与或非
Math 常量:
方法:
1 2 3 4 random ()round ()max ()min ()
字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 var x = "John" ; x[0 ] = 'K' ; x.length ; var y = new String (x)length; constructor prototype concat () charCodeAt ()indexOf () lastIndexOf () match () search () replace () slice () split () substr () substring () trim () toString ()
字符串参考
强制转换 String 1 2 3 4 5 a.toString () String (123 )
Number 1 2 3 Number ()parseInt ("123" , 10 )parseNumber ()
Boolean
运算符
正则表达式 数组 1 2 3 4 5 6 7 8 var cars=new Array ();cars[0 ]="Saab" ; cars[1 ]="Volvo" ; cars[2 ]="BMW" ; var cars=["Saab" ,"Volvo" ,"BMW" ];var cars=new Array ("Saab" ,"Volvo" ,"BMW" );
数组操作:
1 2 3 4 5 6 7 8 9 10 11 concat () join () pop () push () reverse () shift () slice () sort () splice () toString () unshift ()
函数 定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function myFunction (var1,var2 ){ var x; return x; } var func = function (var1, var2 ){ var x; return x; } myFunction (argument1,argument2)func (argument1,argument2)
函数自调用:
1 2 3 (function ( ) { var x = "Hello!!" ; })();
箭头函数:
1 2 3 (参数1 , 参数2 , …, 参数N) => { 函数声明 } () => {函数声明}
闭包:
1 2 3 4 5 6 7 var add = (function ( ) { var counter = 0 ; return function ( ) {return counter += 1 ;} })(); add (); add (); add ();
call, apply
1 2 fun.call (obj, 2 , 3 ); fun.apply (obj, [2 , 3 ]);
对象 定义对象:
1 2 3 4 5 6 7 8 9 10 11 12 var person={ firstname : "John" , lastname : "Doe" , id : 5566 }; name = person.lastname ; name = person["lastname" ]; name = person.fullName ();
创建对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 function person (firstname,lastname,age,eyecolor ){ this .firstname =firstname; this .lastname =lastname; this .age =age; this .eyecolor =eyecolor; this .changeName =changeName; function changeName (name ) { this .lastname =name; } }
一个已存在的对象构造器中是不能添加新的属性的。
原型对象:所有的 JavaScript 对象都会包含一个 prototype(原型对象)。
可以使用 prototype 属性给对象的构造函数添加新的属性和方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function Person (first, last, age, eyecolor ) { this .firstName = first; this .lastName = last; this .age = age; this .eyeColor = eyecolor; } Person .prototype .nationality = "English" ;Person .prototype .name = function ( ) { return this .firstName + " " + this .lastName ; }; "name" in person; person.hasOwnProperty ()
this是指调用它的上下文。
日期 初始化一个日期:
1 2 3 4 new Date () new Date (milliseconds) new Date (dateString)new Date (year, month, day, hours, minutes, seconds, milliseconds)
设置日期:
1 2 3 4 5 var myDate=new Date ();myDate.setFullYear (2010 ,0 ,14 ); var myDate=new Date ();myDate.setDate (myDate.getDate ()+5 );
类型转换 语句 基本语句 for:
1 2 3 4 5 6 var person={fname :"John" ,lname :"Doe" ,age :25 }; for (x in person) { txt=txt + person[x]; }
typeof:
1 2 3 4 5 typeof "John" typeof 3.14 typeof false typeof [1 ,2 ,3 ,4 ] typeof {name :'John' , age :34 }
错误处理 1 2 3 4 5 6 7 try { ... } catch (e) { ... } finally { ... }
调试 使用 console:
使用 Debugger:
1 2 3 var x = 15 * 5 ;debugger ;document .getElementbyId ("demo" ).innerHTML = x;
严格模式 关键字 this 在方法中,this 表示该方法所属的对象。 如果单独使用,this 表示全局对象。 在函数中,this 表示全局对象。 在函数中,在严格模式下,this 是未定义的(undefined)。 在事件中,this 表示接收事件的元素。 类似 call() 和 apply() 方法可以将 this 引用到任何对象。
void void 操作符指定要计算一个表达式但是不返回值。
1 2 3 var a,b,c;a = void ( b = 5 , c = 7 );
例如:
1 2 3 4 5 6 void func ()javascript :void func ()void (func ())javascript :void (func ())
1 <a href ="javascript:void(0)" > 单击此处什么也不会发生</a >
如果要定义一个死链接使用javascript:void(0)
。
表单 访问表单字段:
1 2 3 4 5 6 7 function validateForm ( ) { var x = document .forms ["myForm" ]["fname" ].value ; if (x == null || x == "" ) { alert ("需要输入名字。" ); return false ; } }
验证API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 checkValidity () setCustomValidity () customError patternMismatch rangeOverflow rangeUnderflow stepMismatch tooLong typeMismatch valueMissing valid if (document .getElementById ("id1" ).validity .rangeOverflow ) { txt = "输入的值太大了" ; }
JSON 数据为 键/值 对。 数据由逗号分隔。 大括号保存对象 方括号保存数组
1 2 3 4 var obj = JSON .parse (text);JSON .stringify ()
Require 该部分只能在服务器中使用。
它是在运行时动态加载,输出的是值的拷贝。
1 2 3 4 module .exports = fsconst fn = require ('fn' )
常用操作 查找标签:
1 2 3 4 5 6 7 8 9 var x=document .getElementById ("intro" );var x=document .getElementById ("main" );var y=x.getElementsByTagName ("p" );var x=document .getElementsByClassName ("intro" );
修改内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 document .write (Date ());document .getElementById ("p1" ).innerHTML ="新文本!" ;document .getElementById ("image" ).src ="landscape.jpg" ;document .getElementById ("p2" ).style .color ="blue" ;document .getElementById ("p2" ).style .fontFamily ="Arial" ;document .getElementById ("p2" ).style .fontSize ="larger" ;dom.className = "btn" ;
事件 设置方式:
1 <body onload ="checkCookies()" >
或
1 document .getElementById ("p2" ).onclick = () => {}
常用事件: onclick onload onchange onmouseover onmouseout onmousedown onmouseup onclick
鼠标坐标
为DOM添加事件句柄,添加的事件句柄不会覆盖已存在的事件句柄。
1 2 3 4 5 6 7 8 9 element.addEventListener (event, function , useCapture); document .getElementById ("myBtn" ).addEventListener ("click" , displayDate);removeEventListener () event = event || window .event ;
事件传递useCapture
有两种方式:冒泡false
与捕获true
。
冒泡下定义了元素事件触发的顺序:
在捕获中,外部元素的事件会先被捕获,不触发,然后才会捕获内部元素的事件。
在冒泡中,内部元素的事件会先被触发,然后再触发外部元素;(委派)
捕获模式下则是:
在捕获中,外部元素的事件会先被触发,然后才会触发内部元素的事件。
也可以关闭事件传递:
1 event.cancelBubble = true ;
定时器
1 2 3 4 5 let timer = setInterval (callback, 2000 );clearInterval (timer);setTimeout (callback, 2000 )clearTimeout ()
IE 8 及更早版本需要使用:
1 x.attachEvent ("onclick" , myFunction);
DOM 元素 HTML DOM 树:
添加,删除与替换:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 var para = document .createElement ("p" );var node = document .createTextNode ("新的段落。" );para.appendChild (node); var element = document .getElementById ("div1" );var child = document .getElementById ("p1" );element.appendChild (para); element.insertBefore (para, child); var parent = document .getElementById ("div1" );var child = document .getElementById ("p1" );parent.removeChild (child); var para = document .createElement ("p" );var node = document .createTextNode ("这是一个新的段落。" );para.appendChild (node); var parent = document .getElementById ("div1" );var child = document .getElementById ("p1" );parent.replaceChild (para, child);
获取 DOM 集合(不是数组):
1 2 3 4 5 6 var myCollection = document .getElementsByTagName ("p" );myCollection.length ; y = myCollection[1 ];
获取节点列表(不是数组):
1 2 3 var myNodeList = document .querySelectorAll ("p" );myNodelist.length ; y = myNodelist[1 ];
二者区别为: HTMLCollection 元素可以通过 name,id 或索引来获取。 NodeList 只能通过索引来获取。 只有 NodeList 对象有包含属性节点和文本节点。
1 2 document .getElementById ('fun' ).dataset .appId = 'hsfun' var f2 = document .getElementById ('fun' ).dataset .appId
页面加载完成后执行
1 2 3 window .onload = () => { }
操作CSS
1 box.style .width = "300px" ;
浏览器对象 Window 表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 window .innerHeight window .innerWidth window .open () window .close () window .moveTo () window .resizeTo () screen.availWidth screen.availHeight location.hostname location.pathname location.port location.protocol location.href location.assign () history.back () history.forward () history.go () navigator.appCodeName navigator.appName navigator.appVersion navigator.cookieEnabled navigator.platform navigator.userAgent navigator.systemLanguage alert ()confirm () prompt () var intervalVariable = setInterval ("javascript function" , milliseconds);clearInterval (intervalVariable)var intervalVariable= window .setTimeout ("javascript function" , milliseconds);clearTimeout (intervalVariable)document .cookie ="username=John Doe;" var x = document .cookie document .cookie ="username=;"
存储对象 Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加、删除、修改、查询操作。
localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
1 2 3 4 5 6 7 length key (n) getItem (keyname) setItem (keyname, value) removeItem (keyname) clear ()
Console 1 2 3 4 5 6 7 8 9 10 11 assert () clear ()count () error ()warn ()info ()log ()time () timeEnd () trace () table ()
其他对象 Document
DOM 节点
属性 对象
事件
CSS