1. 连用两个非运算符是将变量值转换成布尔值的快速方法
2. offsetParent 获取元素页面上有定位的父元素
3. 获取event对象(兼容性写法): var oEvent = e || event
4. 按ctrl+enter发送消息:
if(oEvent.ctrlKey && oEvent.keyCode==13){
...
}
5. 取消冒泡:oEvent.cancelBubble=true
6. 可视区鼠标位置:clientX ,clientY
7. 但凡被setInterval调用的就是window
8. call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向
9. IE谷歌中向上滚是120,向下滚是-120;
火狐向上滚上:-3;下:3;
10. toFixed();返回的是具有指定位数小数的数字的字符串表示, 该方法能表示具有 0 到 20 位小数的数字,超过这个范围的值会引发错误
11. toString();括号内是进制数,省略则是十进制,可把一个 Number 对象转换为一个字符串,并返回结果
12. 正则中修订符g之所以起作用是因为lastIndex属性会随着改变
13. 操作iframe中的元素,contentWindow是关键(谷歌需在服务器环境下测试)
obj.contentWindow.document.getElementById() 各浏览器兼容
obj.contentDocument.getElementById() IE6,7不兼容
14. 跨域常用方法:
1).document.domain设置为同源
2).服务器代理:XMLHTTPRequest代理文件
3).script标签:jsonp,script标签不存在跨域问题
4).location.hash
5).window.name
6).flah
7).html5 postMessage
15. firebug常用:
console.log();
console.warn();警告信息
console.error();错误信息
console.group(‘第一组’); Console.groupEnd();分组
console.dir(),显示信息
console.dirxml(obj);显示当前元素代码结构
console.assert();断言
console.trace();调用的顺序
console.time();console.timeEnd();显示运行时间,括号中必须有信息
console.profile();console.profileEnd();执行性能
16. 事件源:不管在哪个事件中,只要你操作的那个元素就是事件源。nodeName属性返回事件源的标签名
ie:window.event .srcElement 标准:event.target
兼容性写法:
var target = 事件对象.srcElement || 事件对象.target;
17. cloneNode();复制节点,参数为true时,同时复制子节点,false时,只复制当前节点
18. 如果数组中的某一项值是null或undefined,那么该值在join()、toString()、valueOf()和toLocaleString()方法中返回的结果中以空字符串表示
19. arguments的callee属性,该属性是一个指针,指向拥有这个arguments对象的函数,例如阶乘函数里面内部调用的函数可以替换为arguments.callee
20. 合并文本节点:normalize()
分割文本节点:splitText();(括号里是数字)
21. console.log:
console.log('保剑锋从磨砺出\n%c梅花香自苦寒来',"color:red;font-size:41px;font-weight:bold;background:green");
console.log("%c\n ","width:100px;font-size:41px;background:url('http://cdn.iknow.bdimg.com/static/common/pkg/module_zed9cd9fd.png') no-repeat -135px -1px");
console.log('%c想和我们共同打造世界最大中文互动问答平台吗?\n想让自己的成就在亿万用户面前展现吗?想让世界看得你的光芒吗?\n加入我们,在这里不仅是工作,投入你的时间和热情,滴滴汗水终会汇聚成不平凡的成果。\n期待你的加盟。http://zhidao.baidu.com/misc/more/joinus',"line-height:40px;");
22. 把arguments对象转换成一个真正的数组:
var args = Array.prototype.slice.call(arguments);
23. Event Loop:
异步执行的运行机制:
1). 所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
2). 主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
3). 一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
主线程不断重复上面的第三步,主线程从"任务队列"中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)
HTML5标准规定了setTimeout()的第二个参数的最小值(最短间隔),不得低于4毫秒,如果低于这个值,就会自动增加。在此之前,老版本的浏览器都将最短间隔设为10毫秒。另外,对于那些DOM的变动(尤其是涉及页面重新渲染的部分),通常不会立即执行,而是每16毫秒执行一次。这时使用requestAnimationFrame()的效果要好于setTimeout()。
需要注意的是,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数
24. js之所以阻塞,是由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现,如果js脚本(行内或者外部)之前有css样式文件,则js将等到css渲染完成再执行,css之后的js将按照顺序执行
25. css不会阻塞DOM树的解析;css加载会阻塞DOM树渲染;css加载会阻塞后面的js语句的执行
26. HTTPS一般使用的加密与HASH算法如下:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
27. MVVM的设计思想:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来
28. 元素水平居中的方法:
a). margin和width实现水平居中
b). inline-block配合text-align 父元素:text-align:center;子元素:inline-block
c). float配合position:relative实现水平居中的方法:父元素:float:left;position:relative;left:50%;子元素:position:relative;right:50%;
d). 绝对定位实现水平居中:父元素:position:absolute;left:50%;子元素:position:relative;right:50%;
e). css3 父元素:display: box; box-orient: horizontal; box-pack: center;
29. 元素垂直居中:
a). 父元素:display: flex;//flex布局 justify-content: center;//水平居中 align-items: center;//垂直居中
29. Array原型上的slice可以把arguments类数组变成真正的数组: var arr = Array.prototype.slice.call(arguments)
30. 闭包是指有权访问另一个函数作用域中的变量的函数