= == //等于(类型不一样,值同样,也会判断为true) === //绝对等于(类型同样,值同样,结果才为true)
这是一个JS的缺陷,坚持不要使用 == 比较javascript
须知:css
尽可能避免使用浮点数进行运算,存在精度问题html
Math.abs(1/3-(1-2/3))<0.000000001
全局变量 i = 1;java
局部变量 var i = 1; let i = 1;(ES6建议使用let)python
严格检查模式jquery
‘use strict'; 严格检查模式,预防JavaScript的随意性致使产生的一些问题ios
多行字符串:ajax
`XXX编程
XXX`json
模板字符串
`hello,${变量}`
str.length str[0] str.toUpperCase() str.toLowerCase()
str.subsring(X,Y)返回str[X,Y)
var arr = [1,2,3,4,5,'hello',null,true]; new Array(1,2,3,4,5,'hello',null,true);
取数组下标,若是越界(arr[8]),就会提示undifined
假如给数组的长度arr.length赋值,数组大小就会发生变化
indexOf:经过元素得到下标索引
slice()截取Array的一部分,相似字符串中的substring
arr.push(),arr.pop() // 尾部
arr.unshift(),shift() // 头部
arr.sort()
arr.reverse()
arr.concat() // 不会改变原数组
arr.join('-') // 链接符 打印
arr.fill(X)
每一个属性之间使用逗号隔开,最后一个不须要添加
var person = { name:"XXX", age:18, tags:['js','java','...'] }
对象赋值:person.name = "XXX"
取对象的值:person.name
使用一个不存在的对象属性,不会报错!undefined
动态删除,添加对象的属性:delete person.name person.XXX=XXX
JavaScript中全部键都是字符串,值是任意对象
判断属性值是否在这个对象中!'XXX' in XXX
判断一个属性是不是这个对象自身拥有的 hasOwnProperty()
arr.forEach(function (value){ // ES5.1 console.log(value) }) for(var i in arr){ // i为数组下标 } for(var e of arr){ // e为数组元素 }
ES6的新特性
var map = new Map([['tom',100],['jack',90]]); var name = map.get('tom'); map.set('admin',123); // 新增 map.delete('XXX'); console.log(name); var set = new Set(1,1,1,3); // 去重 set.add(x); set.delete(x); set.has(x);
iterater ES6新特性
function abs(x){ //定义方式一 //... } var abs = function(x){ //定义方式二 //... }
若是没有执行return,函数执行完也会返回结果:undefined
JavaScript能够传任意参数,也能够不传参数
var abs = function(x){ //手动抛出异常 if(typeof x != 'number'){ throw 'Not a Number'; } if(x >= 0){ return x; }else{ return -x; } }
arguments
参数表示函数传入的全部参数,是一个数组
rest
剩余参数,只能写在最后面,必须用...表示
function aaa(a,b,...rest){ consloe("a->"+a); consloe("b->"+b); consloe("rest->"+rest); }
全部全局变量都绑定在全局对象window上的
window.x(全局变量)
windows.alert(window.x)
var old_alert = window.alert; //old_alert(x); window.alert = function(){ }; window.alert(123); //失效 //恢复 window.alert = old_alert; window.alert(456);
全局变量→冲突
//惟一全局变量 var App = {}; //定义全局变量 App.name = 'XXX'; App.add = function (a,b) { return a + b; }
把本身代码所有放入本身定义的惟一命名空间中,下降全局命名冲突的问题(JQuery)
ES6建议使用let
关键字去定义局部做用域的变量(解决局部做用域冲突的问题),使用const
定义常量const PI = '3.14'
var XXX = { name:'xxx', birth:2020, //方法 age:function(){ var now = new Date().getFullYear(); return now - this.birth; } } XXX.name XXX.age()
apply在js中能够控制this指向,经过 apply() 方法,可以编写用于不一样对象的方法。函数.apply(对象,参数列表)
this指向apply的对象
标准对象
number, string, boolean, object
typeof NaN "number" typeof [] "object" typeof undefined "undefined"
var now = new Date(); now.getFullYear(); // 年 now.getMonth(); //月(0-11) now.getDate(); //日 now.getDay(); //星期几 now.getHours(); //时 now.getMinutes(); //分 now.getSeconds(); //秒 now.getTime(); //时间戳 1970.1.1 00:00 - ms console.log(new Date(113224222)) //时间戳转为时间 //转换为字符串 now.toLocaleString() now.toGMTString()
JSON(JavaScript Object Notation, JS 对象表示法) 是一种轻量级的数据交换格式。
特色:简洁,清晰的层次结构;易于人阅读和编写,同时也易于机器解析和生成,有效提高网络传输效率
在JavaScript中一切皆对象,任何JS支持的类型均可以用JSON来表示
格式:
JSON字符串和JS对象的转化
var user = { name: "XXX", age: 3, sex: '男' } //对象转化为JSON对象 var jsonUser = JSON.stringify() //json字符串转化为对象,参数为json字符串 var obj = JSON.parse('{"name":"XXX","age":3,"sex":"男"}')
原型:子类(对象).__proto__ = 父类(原型对象); //子类的原型是父类
随意指向
class
关键字是在ES6引入的
class Student{ constructor(name){ this.name = name; } hello(){ alert('hello') } } class pupil extends Student{ constructor(name,grade){ super(name); this.grade = grade; } myGrade(){ alert('我是一名小学生') } } var xiaoming = new Student("xiaoming"); var xiaohong = new Student("xiaohong"); xiaoming.hello();
原型链:__proto__
BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、能够与浏览器窗口进行互动的对象结构。
浏览器:
内核:IE, Chrome, Safari, FireFox
三方:QQ,360
window表明浏览器窗口
window.alert(1) // 调整浏览器窗口大小 window.innerHeight window.innerWidth window.outerHeight window.innerWidth
navigator封装了浏览器的信息
navigator.appName navigator.appVersion navigator.userAgent navigator.platform
通常不使用,由于会被人为修改,不建议用这些属性来判断浏览器版本
screen表明屏幕尺寸
screen.width screen.height
location表明当前页面的URL信息
host: "www.bilibili.com" hostname: "www.bilibili.com" href: "https://www.bilibili.com/video/BV1JJ41177di?p=19" protocol: "https:" reload: ƒ reload() // 刷新页面 // 设置新的地址 location.assign('https://...')
document表明当前的页面(document.),HTML DOM文档树
//获取具体的文档树节点 <dl id="app"> <dt>Java</dt> <dd>JavaSE</dd> </dl> <script> var dl = document.getElementById('app'); </script>
获取cookie
document.cookie "finger=158939783; _uuid=C56A5201-E5AB-30A7-6A3D-33573CFAEC4B75115infoc; buvid3=2DE4F72B-D52C-4628-B6F6-D25A79D4DFBD155818infoc; sid=jsr4r70q; im_notify_type_775959=0; LIVE_BUVID=AUTO6215819975268326; LIVE_PLAYER_TYPE=2; DedeUserID=775959; DedeUserID__ckMd5=5a93072db131a757; bili_jct=e4c30825e9523f0d624509aa21012a7e; rpdid=|(J~RllJRmlY0J'ulm)RkRm)l; blackside_state=1; CURRENT_FNVAL=80; bp_t_offset_775959=434460479141307658; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1600696828; CURRENT_QUALITY=80; bp_video_offset_775959=438421933640865406; finger=158939783; PVID=3"
劫持cookie原理
www.taobao.com
<script src="aa.js"></script> <!-- 恶意人员:获取你的cookie上传到他的服务器 -->
服务器能够设置:httpOnly(安全)
history表明浏览器的历史记录(不建议使用)
history.back() history.forward()
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它能够动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是经过说明部分定义的)。
浏览器网页就是一个DOM树形结构,要操做一个DOM节点,就必须先得到这个DOM节点
标签选择器:document.getElementsByTagName('h1')
(返回数组)
id选择器:documen.getElementById('id')
class选择器:document.getElementByClassName('class')
(返回数组)
得到子节点:Node.children
修改文本值:
Node.innerText = 'xxx'
Node.innerHTML = 'xxx'
(超文本)
设置样式:
Node.style.color/fontSize/... = 'xxx'
(驼峰命名)
先获取父节点,再经过父节点删除本身
Node.parentElement.removeChild(Node)
(只能经过id选择器选择节点删除)
注意:删除节点过程当中,父节点的children是动态变化的
得到的DOM节点若为空节点,能够经过innerText增长元素
追加节点:Node1.append(Node2)
建立新节点:document.createElement('p')
设置节点属性:Node = setAttribute('属性名','属性值')
插入节点:Node.insertBefore(newItem,existingItem);
表单的目的:提交信息
得到要提交的信息
input_text.value boy_radio.checked //boolean
MD5加密密码
表单绑定提交事件
onsubmit= 绑定一个提交检测的函数,返回布尔值(return false:不提交表单)
公式:$(selector).action()
$('#id').click(function(){ //... }) //当网页元素加载完毕以后,响应事件 $(document).ready(function(){ //... }) //↑简写,获取坐标 $(function(){ $('#divMove').mousemove(function(e){ $('mouseMove').text('x:'+e.pageX+'y:'+e.pageY) }) })
文档工具站:https://jquery.cuishifeng.cn/
操做DOM:
$('#test-ul li[name=python]').css({"color","red"}) $('#test-ul li[name=python]').show()/hide() $(window).width
LayUI 弹窗组件
ElementUI 样式好看