JS零碎知识

一、js中__proto__和prototype的区别和关系
1.原型对象Foo.prototype保存着构造函数Foo实例共享的方法,有一个指针constructor指回构造函数Foo。
2.Foo的实例有属性(__proto__),指向构造函数的原型对象,这样实例就可以访问原型对象的所有方法。
二、编程方式
(1)面向过程编程:根据业务逻辑直接写代码。
(2)函数式编程:把运算过程封装成函数。
(3)面向对象编程:对函数进行分类和封装。
三、闭包:函数里面的函数被函数外面的变量引用,导致函数的作用域没法被释放,这种机制就叫闭包。
四、为什么会出现点透
1、在移动端中,两次触摸是放大操作,当你首次触摸的时候,浏览器会等待300ms,根据用户是否进行第二次触摸,来判断是单击操作还是放大操作。
2、首次触摸结束时隐藏了A元素,300ms后发生的click事件作用在A元素下的B元素上,产生了点透的情况。
五、点透解决方案
1.

2.

附六:深克隆方法封装
来源:http://www.jb51.net/article/79707.htm

附七:JS中type="button"和type="submit"的区别
(1)type=submit 是发送表单,form.submit()作为其onclick后的默认事件,表单提交时,所有具有name属性的html输入元素(包括input标签、button标签、select标签等)都将作为键值对提交,除了Submit对象
(2)type=button 就单纯是按钮功能;其没有默认事件。
附八:
$().each():处理对象
$.each():处理数组
附九:闭包。函数里面的函数被函数外面的对象(或变量)引用,导致函数的作用域不能释放,这种机制就是闭包。它通过参数将需要的外部数据引进来,通过“被函数外面的对象(或变量)引用”将里面的方法和运算结果送出去。闭包是将函数内部和函数外部连接起来的桥梁。最大的作用是减少全局变量,做大的副作用是消耗内存。
附十:DOMContentLoaded 和 window.onload 的区别
1、当页面(包含样式文件、图片文件、子框架页面(iframe))完全加载完毕后会触发 window.onload 事件,
2、当页面文档加载并解析完毕之后会马上触发DOMContentLoaded 事件。
3、“HTML 文档被加载和解析完成”是什么意思呢?浏览器向服务器请求到了 HTML 文档后便开始解析,产物是 DOM(文档对象模型),到这里 HTML 文档就被加载和解析完成了。
附十一:
如果不使用 async、defer,脚本将在页面完成解析时执行
1、async是 HTML5 中的新属性,仅适用于外部脚本(只有在使用 src 属性时)。
2、async,脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)
3、defer IE支持defer属性,规定对脚本执行延迟到页面加载完为止。
4、调用$(fn),等于调用$().ready(fn),等于调用$(document).ready(fn)
附十二:jQuery反选

function addZero(number) {
return (number.toString())[1] ? number : '0' + number;
}

function toLocaleDateTime(serverTime){
var timeZoneMilliSeconds=new Date().getTimezoneOffset()601000;
var serverMilliSeconds=new Date(serverTime).getTime();
var localeMilliSeconds=serverMilliSeconds-timeZoneMilliSeconds;
var localeDateTime=new Date(localeMilliSeconds);
var localeYear=localeDateTime.getFullYear();
var localeMonth=addZero(localeDateTime.getMonth());
var localeDate=addZero(localeDateTime.getDate());
var localeHours=addZero(localeDateTime.getHours());
var localeMinutes=addZero(localeDateTime.getMinutes());
var localeSeconds=addZero(localeDateTime.getSeconds());
return localeYear+"年"+(localeMonth+1)+"月"+localeDate+"日 "+localeHours+"时"+localeMinutes+"分"+localeSeconds+"秒"
}

function toServerDateTime(localeDateTime){
var timeZoneMilliSeconds=new Date().getTimezoneOffset()601000;
var localeMilliSeconds=new Date(localeDateTime).getTime();
var serverMilliSeconds=localeMilliSeconds+timeZoneMilliSeconds;
var serverDateTime=new Date(serverMilliSeconds);
var serverYear=serverDateTime.getFullYear();
var serverMonth=addZero(serverDateTime.getMonth());
var serverDate=addZero(serverDateTime.getDate());
var serverHours=addZero(serverDateTime.getHours());
var serverMinutes=addZero(serverDateTime.getMinutes());
var serverSeconds=addZero(serverDateTime.getSeconds());
return serverYear+"-"+serverMonth+"-"+serverDate+" "+serverHours+":"+serverMinutes+":"+serverSeconds
}

手输跳转页数,对输入内容进行处理
if(eventTargetInnerText==="跳转"){
var leap=$("#leap");
var leapPage=parseInt(leap.val());
if (leapPage>totalPage) {
leap.val(totalPage);
pageNumber=totalPage;
}else if(leapPage<=0||isNaN(leapPage)){
leap.val(1);
pageNumber=1;
}else{
pageNumber=leapPage;
leap.val(pageNumber);
}
}

Web Components特征
Web Components将一系列特性加入HTML和DOM规范,使得开发者可以自由创建在web应用或文档可重用的元素或部件,其由四部分组成:
HTML模板(HTML Templates):HTML内的DOM模板,在<template>元素内声明。
HTML导入(HTML Imports):定义在文档中导入其他HTML文档的方式;
自定义元素(Custom Elements):定义新HTML元素的一系列API;
影子DOM(Shadow DOM):组合对DOM和样式的封装;
附十三、DOM元素的增删改查
1、增加:appendChild、insertBefore、setAttribute
2、删除:removeChild
3、改变:replaceChild
4、查找:getElementById、getElementsByTagName、getElementsByClassName、querySelector、querySelectorAll
附十四、javascript的onbeforeunload()和onunload()事件的相同与不同。
1、相同点:两者都是在对页面的关闭或刷新事件作个操作。
2、不同点:onbeforeunload()事件,在页面卸载之前触发,可防止误按F5,在这个事件里用localstorage存储数据,在onload事件里读取数据;onunbload()事件,在页面卸载之后触发;前者可以禁止后者发生。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复