1.使用window.crypto.getRandomValues方法生成随机数组
crypto.getRandomValues接受一个参数typedArray,typedArray的值可以是如下对象的实例:
Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array
例如要生成6个0~256的随机整数组成的数组可以这样做:
var array = new Uint8Array(6); window.crypto.getRandomValues(array);
2.使用字面量重写构造函数prototype属性时constructor指向问题的解决
function Demo(){} Demo.prototype={} var pp=new Demo; pp.constructor;//Object.....(我们期望的值是Demo,但是由于pp.__proto__.__proto__.constructor是Object,最终使得此处为Object) //解决办法,使用Object.defineProperty为构造函数的prototype手动添加constructor属性并指向Demo Object.defineProperty(Demo.prototype,"constructor",{ value:Demo, enumerable:false //因为默认是可枚举的,所以此处必须设置 }); Demo.prototype.propertyIsEnumerable("constructor");//false //如果不设置enumerable像下面这样 Demo.prototype.constructor=Demo; //那么constructor是可以被枚举的 Demo.prototype.propertyIsEnumerable("constructor");//true //测试 var ii=new Demo; ii.constructor;//Demo
3.两个变量A和B交换值的3种方法:
- 使用中间变量C
C=A; A=B; B=C; - 使用加减法运算(数值)
A=A+B; B=A-B; A=A-B; - 使用异或运算(数值)
A=A^B; B=A^B; A=A^B;
4.一个有关函数作用域与全局变量赋值的问题
var addCount; function rr() { var count = 0; addCount = function () { count++; } function r2() { console.log(count); } return r2; } var res1 = rr(); var res2 = rr(); addCount(); res1(); //0 res2(); //1
分析:
为什么第一次执行res1输出0,而第二次是1;
此处的关键在于addCount变量,它是一个全局变量,只有一个;
当对res1赋值成功时,addCount被赋值成功,但是,当res2被赋值成功时,addCount又被重新赋值,所以最终addCount是在res2里面被赋值成功的,也在res2里面形成了闭包,而与res1已经断了关系;
理解了上面这个,那么下面的这种情况也就不难理解了,和上面是同样的道理:
var addCount; function rr() { var count = 0; addCount = function () { count++; } function r2() { console.log(count); } return r2; } var res1 = rr(); addCount(); addCount(); var res2 = rr(); addCount(); var res3 = rr(); addCount(); res1(); //2 res2(); //1 res3(); //1
5.文字超出部分显示省略号
.text { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
6.关于parseInt方法的一个需要注意的地方
["1","2","3"].map(parseInt);//[1,NaN,NaN]
这里稍不注意就会以为是输出[1,2,3],而忽略了parseInt其实是可以有两个参数的,所以实际执行的时候应该是这样的:
//会将item和index两个参数都传入进去,因为对于parseInt来说这样是允许的 parseInt("1",0); parseInt("2",1); parseInt("3",2);
如果换成诸如Number或parseFloat这种只允许一个参数的方法则是正常的
7.永久修改npm源
#编辑文件~/.npmrc(如果没有此文件,创建即可) vi ~/.npmrc #在文件中加入以下配置 registry = https://registry.npm.taobao.org #保存退出 #使用命令npm config list查看是否生效
8.含中文的字符串验证小例子
//限制字节长度 function navigatorId(id){ //双字节字符(这里只匹配了中文)都换成两个a字母 var newId=id.replace(/[\u4e00-\u9fa5]/g,"aa"); return /^\w{0,20}$/.test(newId); }
9.mouseout和mousemove的事件冒泡带来的问题,解决方法
结合mouseenter和mouseleave来做,或者直接代替
10.去掉页面滚动条
/***两个方向都隐藏****/ html{ overflow:hidden; } /***隐藏垂直方向滚动条****/ html{ overflow-y:hidden; } /***隐藏水平方向滚动条****/ html{ overflow-x:hidden; }
11.只用css实现div盒子高度根据父容器宽度的变化自适应
#box{ width:25%;//会相对于父容器 height:0; padding-bottom:25%;//会相对于父容器 } /**** box里面可以放任意的东西 ****/
12.ElementObj.getBoundingClientRect()
其中包含某个元素相对于视窗的位置集合,集合中有top, right, bottom, left等属性,兼容IE6
var box=document.getElementById('box'); // 获取某个元素 box.getBoundingClientRect().top; // 元素上边距离页面上边的距离 box.getBoundingClientRect().right; // 元素右边距离页面左边的距离 box.getBoundingClientRect().bottom; // 元素下边距离页面上边的距离 box.getBoundingClientRect().left; // 元素左边距离页面左边的距离
13.字符串比较
a.localeCompare(b);//1或-1
14.通过ele或document获取window
var doc = ele.ownerDocument; var win = doc.defaultView;
相关推荐
javascript笔记javascript笔记javascript笔记
狂神说系列 JavaScript笔记
javascript 学习笔记
js笔记js笔记js笔记js笔记
韩顺平JS笔记全 韩顺平JS笔记全韩顺平JS笔记全韩顺平JS笔记全韩顺平JS笔记全韩顺平JS笔记全韩顺平JS笔记全韩顺平JS笔记全
韩顺平html+css+js之JS笔记
黑马JavaScript笔记二.md
js学习中的重要笔记,非常适合菜鸟快速入门,看完即会使用js!
html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习笔记html css js 学习笔记html css js 学习笔记 html css js 学习...
韩顺平 javascript 笔记 js面向对象 笔记 韩顺平 完整版
javascript入门课程笔记,简单易懂,适合刚刚开始学习的小白
个人Javascript学习笔记 精华版 个人Javascript学习笔记 精华版 个人Javascript学习笔记 精华版
js笔记.md
JavaScript学习笔记JavaScript学习笔记
针对李立超JavaScript基础篇的教学视频,一集集整理出的笔记,以集数为目录,详细概括了李立超老师所讲的所有内容
笔记做的很详细,通俗易懂,结合js代码讲解的,对初学javascript的很有用的 笔记做的很详细,通俗易懂,结合js代码讲解的,对初学javascript的很有用的
JavaScript学习笔记_js常用函数封装_js包 gulp scss 模块化开发 github常用命令
这个菜鸟的笔记里面没有谈到JavaScript中的对象,比如说时间对象和字符串对象,这些内容可以在“菜鸟的JavaScript对象笔记”中找到。不过因为小菜鸟个人认为HTML DOM比其它的JavaScript对象更常用一些(不过这可不...
javascript入门笔记包括javascript简介、javascript语法、javascript流程控制、函数、数组等
黑马JavaScript笔记一.md