js1
js:

js代码交给浏览器的js引擎来解释成二进制数字,html和css交给浏览器的渲染引擎去解析。解释一句执行一句。属于解释语言
++a:a先加1,后++a返回结果

==会把字符串型的数据转换为数字型:18==‘18’,===是全等,要求数据类型也相等。所以18不全等于'18',对于对象而言,就是地址也得一样,完全一样。
js中推荐使用单引号
else if()中间有空格
输入框:var a=prompt('请输入信息'),取过来的数字是字符串型
八进制在数字前面加0:010,十六进制加0x,NaN非数值,isNaN(123)返回false,isNaN('asd')返回true
检测aaa的数据类型:typeof aaa
引号:字符串的嵌套:外单内双,外双内单
js转义字符:

转换为整数:parseInt(‘123’);parseInt('12px'):可去掉后面单位。转换为浮点数:parseFloat('3.12')
-,*./可以转换成数值型:'12' - '12'=0
boolean():转换为布尔型:

switch:

var arr=new Array();var arr =['sd','qwe',1,2,true]; //创建数组

新增数组元素:1.修改数组长度,2.直接给它赋值:a[2]=...
判断是否为数组:aa instanceof Array或者Array.isArray(aa)
末尾添加元素:arr.push(t1,t2,t3,t4,t5);返回新数组长度;前面...:arr.unshift(t1,t2,t3)
删除末尾元素:arr.pop()返回所删除元素;前面...:arr.shift()
翻转数组:arr.reverse();
返回第一个满足索引:arr.indexOf('jary');从后往前返回第一个满足的索引:arr.lastIndexOf('tom'),-1表示不存在,
数组-》字符串:
1.arr.toString()
2.

字符串查字符位置:

由位置返回字符:str.charAt(2)或者str[2]

字符串截取:

字符串其他方法:


栈和堆:

说明:复杂数据类型相互赋值之后,由于赋值的是地址,则操作的是同一个东西。 而简单数据类型不影响。
排序:

函数:function fun(a,b,c){return;}
arguments:

匿名函数声明并调用:var f=function(){...};f()
预解析:


说明:函数直接声明和匿名函数处理方式不同




说明:这个打印10
创建对象1:
var o={
name:'a',
age:12,
say:function(){
..
}
}
使用:o.name或者o['name']
创建对象2:
var a=new Object();
a.name='aa';
a.f=function(){..}
创建对象3(用构造函数):

其中 new执行过程:

for in:

帮助文档:https://developer.mozilla.org/
内置对象:
MATH:



random():
Math.random():生成0-1之间的随机数 [0,1)

Date:





time: 
复杂数据类型操控的是同一个对象,因为赋值时是赋值了地址:

DOM:
一个页面是一个文档
根据id获得对象:document.getElementById('id'),之后用console.dir(该对象)查看对象详细信息
根据标签...:document.getElementsByTagName('div')

根据类名:

返回指定选择器的第一个对象querySelector:

querySelectorAll:

获取body和HTML


改变元素内容:innerText:

和innerHTML的区别:


说明:去掉不识别的span,去掉空格和换行

说明:保留空格和换行
更改表单的值:


利用flag多次点击变化效果:

button用innerHTML。
更改样式:




说明:选中与否
获得onfocus,失去焦点onblur,鼠标经过onmouseover,鼠标离开onmouseout,类似onclick的使用。
设定类名:this.className='asd';
获得或者设置属性值:元素.属性名,元素['属性名']
获取最近的父节点:元素.parentNode
获取所有子节点:元素.childNodes,包括文本结点,文本结点和元素结点的nodeType不同
获取所有的子元素结点(不要孙子):元素.children
获取第一个子节点和最后一个:firstChild,lastChild
第一个子元素和最后一个:firstElementChild,lastElementChild(ie9以上支持)

下一个兄弟结点:nextSibling;上一个:previousSibling
下一个兄弟元素结点:nextElementSibling,上一个:previous。。
创建并添加结点:


删除结点:removeChild(子节点)
让超链接不跳转:<a href="javascript:;"></a>,还可以给a添加点击事件。
复制结点:

有很多对象的数组:

div利用innerHTML创建元素 :


addEventListener:

删除事件,执行一次就不再执行了:

事件流的捕获与冒泡:
点击一个元素之后,这个点击事件从document传到这个元素,然后这个点击再从这个元素传到document

事件对象:发生了某个事件后所搜集的信息。
有了事件就有事件对象


e.target(第一次是哪个元素触发了事件,随后触发事件的都不算,比如冒泡,对于click,点到了谁,若有父子,则为子),而this就是addEve...前面的那个东西:

e.type:返回事件类型
e.preventDefault(),阻止默认事件发生,比如点击超链接会出现跳转动作,这个跳转动作就是链接click事件的默认行为。

防止向上冒泡:e.stopPropagation();
事件委托:

说明:点击li之后,点击冒泡给ul,然后ul触发点击事件,然后执行函数代码。
对于某元素,禁止对它鼠标右击事件:contextmenu,若为document,则整个页面都不能右键,若是某元素,则其他元素可以右键:

selectstart:

mouseEvent获得坐标:
clientX是相对于当前所见页面,而page是相对于整个页面
mousemove:鼠标位置变化就触发。利用mousemove图片随着鼠标移动:



键盘事件,一般都给document加上:


keyCode:

使搜索框获得焦点:element.focus(),放大文本框里的数字:



注意:获得一次焦点,focus对应的function执行完一次,不会等。当把b事件写到a事件里面时,若a事件不触发,则b事件就不会有,若a事件出发了,则b事件就被注册上了,之后不用再触发a事件,b事件也能监测到。若又触发了a事件,则b事件多了一个。若没有选中,则focus()之后会选中,并触发foucs事件,若已经选中,则focus()不起作用。
BOM:

window.onload:等文档所有的内容加载完毕之后,再加载它,因此js放到任何位置。



DOMContentLoaded:

窗口大小事件:

说明:window.innerWidth:获取浏览器窗口宽度
innerWidth和innerHeight:

定时器
setTimeOut 几秒后调用函数:

设定2个定时器:

停止定时器:

setInterval每隔几秒调用函数:

倒计时案例实现:


停止计时器:

发送短信倒计时案例:


this:





js队列:

说明:回调函数都放到异步任务里面了。
执行机制:


说明:先把这四行按顺序放到同步任务里面,随后开始从头执行,到了第二行时,回调函数交给异步进程处理,如果有点击事件就把fn异步队列中,若没有点击,则不管。接着进行第三行,到了第四行,交给异步进程,如果到了3s,则把fn放到异步队列中,此时同步队列已经空了,则去查看异步队列中是否有等待的认为,一个一个取出来执行。
location:

说明:f12在console中输入location.href查看
5s跳转页面案例:

页面传值:

跳转:


获得浏览器的信息:navigator

前进和后退,history:


offset:


和style的区别:

拖拽:mousedown是按下去就会反应,click是鼠标按下再松开时才有反应

综合宽度汇总:
offsetWidth:元素border+padding+width
clientWidth:元素padding+width
e.pageX:整个页面离左边的距离
e.clientX:当前页面离左边的距离
offsetLeft:元素边框离有定位的父元素的左侧距离(读)
style.wdith:真实宽度(写)
clientLeft:元素左边框大小
scrollHeight:若div内容少,则为div的padding+height,若内容多,则为整个内容的高度(也包括padding)
client:

立即执行函数,不用调用,直接执行(脚本中只有一个):传参过程为后面的小括号传递给前面的小括号。

pageshow:不管有没有缓存,每次加载页面都会触发。而对于load,若是从缓存读取,则不触发。e.persisted若为true,则表示从缓存读取
scroll和scroll事件:

说明:实际高度:如果里面的文字溢出来了,也要包含,包含padding。



说明:对于文档和某个元素而言,被卷去头部长度的获取不一样。
滚动案例:
需求:当滚动到banner2时,粉色框随滚动条移动。当滚动到banner3时出现回到顶部的字样。

关键代码:




构造函数原型prototype,每个构造函数有一个prototype对象,每个示例对象有__proto__属性指向这个公用的prototype,其实每个示例对象的__proto__和构造函数的prototype就是同一个对象,操作的是同一个对象,本质是同一个地址。


对象原型__proto__:__proto__指向原型对象prototype:

constructor,是prototype的一个属性,指向构造函数,如果Star.prototype被赋值为另一个对象,则会覆盖constructor,此时需要补回来constructor,让constructor重新指回原来的构造函数,但是此时的Star.prototype已经和实例对象的__proto__不是一个对象了:


三者的关系:

原型链:

查找某个属性:先看自己的实例对象有没有这个属性,再看自己的构造函数的prtotype有没有这个属性,再看Object.prototype有没有这个属性:

说明:toString()是prototype的方法。
利用prototype生成新函数,里面this指的是调用它的实例对象:
扩展内置对象方法:


说明:2种创建数组的方式都创建了数组对象,都是Array的实例对象。

浙公网安备 33010602011771号