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的实例对象。

posted @ 2020-03-17 13:06  Jary霸  阅读(522)  评论(0编辑  收藏  举报