`

JS笔记(长期更新的js杂七杂八)

阅读更多

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种方法:

  1. 使用中间变量C
    C=A; A=B; B=C;
  2. 使用加减法运算(数值)
    A=A+B; B=A-B; A=A-B;
  3. 使用异或运算(数值)
    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;

 

1
1
分享到:
评论

相关推荐

    狂神说系列 JavaScript笔记

    【狂神说系列 JavaScript笔记】是一份全面且深入的JavaScript学习资源,旨在帮助开发者和初学者深入理解这门广泛应用于Web开发的脚本语言。这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个...

    李立超JavaScript基础篇笔记

    JavaScript,简称JS,是由Brendan Eich在1995年创造的一种高级编程语言,最初目的是为了增强网页的交互性,特别是在前端进行表单验证。JavaScript不是Java的子集,两者之间没有直接关联。JS起初名为LiveScript,但在...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    javascript笔记 javascript笔记

    - **解释:** 这段代码会引入名为`java.js`的外部JavaScript文件。例如,在`java.js`文件中可以写入: ```javascript document.write("Hello World!"); ``` ### 组合使用JavaScript和HTML 通过组合使用...

    js笔记js笔记js笔记js笔记

    js笔记js笔记js笔记js笔记

    黑马JavaScript笔记二.md

    黑马JavaScript笔记二.md

    js菜鸟快速学习笔记总结

    js学习中的重要笔记,非常适合菜鸟快速入门,看完即会使用js!

    韩顺平html+css+js之javascript笔记

    ### 韩顺平html+css+js之javascript笔记 #### Javascript基础知识概览 ##### JavaScript在Web开发中的角色 JavaScript是一种被广泛应用于Web开发的脚本语言,它不能单独运行,而是与HTML、JSP、PHP、ASP.NET等...

    html css js 学习笔记.zip

    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 学习...

    前端学习笔记-黑马程序员JS

    "前端学习笔记-黑马程序员JS" 本资源主要介绍了 JavaScript 的基本概念和语法,包括变量、数据类型、运算符、流程控制、数组、函数、对象、内置对象等知识点。 变量 在 JavaScript 中,变量可以在三种位置书写:...

    js课程笔记

    javascript入门课程笔记,简单易懂,适合刚刚开始学习的小白

    传智播客JS笔记

    "传智播客JS笔记"提供了一套全面且易于理解的学习资源,特别适合初学者掌握JavaScript的基础和核心概念。以下是对笔记中可能包含的重要知识点的详细解释: 1. **变量与数据类型**:JavaScript 支持动态数据类型,这...

    html+js视频笔记

    HTML+JS 视频笔记 本篇笔记涵盖了 HTML 和 JavaScript 的基础知识,涵盖了 ...通过本篇笔记,读者可以了解 JavaScript 的基础知识,包括变量、函数、控制语句、数据类型、命名规范等,并通过实践案例加深理解。

    JavaScript学习笔记_js常用函数封装_js包.zip

    本压缩包“JavaScript学习笔记_js常用函数封装_js包.zip”包含了对JavaScript基础及进阶技巧的学习资料,特别关注了函数封装和模块化开发实践。 首先,`tool.js`可能是一个实用工具函数集合,封装了一些常见的...

    JavaScript基础笔记

    这份“JavaScript基础笔记”涵盖了JS学习的关键概念,包括变量、运算符、函数、对象以及常用的内置对象如Date、String和Array。 首先,让我们从变量开始。在JavaScript中,声明变量使用`var`、`let`或`const`关键字...

    html+css+javascript笔记完整版

    笔记中将详细介绍JavaScript的基础语法,变量、数据类型、运算符、流程控制语句。你将学习函数的使用,以及如何操作DOM(Document Object Model)来改变网页内容。JavaScript还涉及事件处理,异步编程如回调函数和...

    creator nodejs js笔记

    这篇笔记主要聚焦在CocosCreator游戏开发环境中,如何结合Node.js和JavaScript进行高效能的应用程序开发。Node.js是一个开放源代码、跨平台的JavaScript运行环境,它允许开发者在服务器端运行JavaScript代码,极大地...

    js笔记.md

    js笔记.md

    个人Javascript学习笔记 精华版

    个人Javascript学习笔记 精华版 本资源为个人Javascript学习笔记的精华版,涵盖了Javascript的基础知识、事件处理、对象和系统函数、浏览器对象等方面的内容。下面是对每个知识点的详细说明: 1. 什么是JavaScript...

    韩顺平JS笔记全

    JavaScript,简称JS,是一种广泛用于Web开发的轻量级脚本语言。它的主要用途是在客户端浏览器上运行,为网页提供动态交互功能。由于JavaScript是由浏览器执行的,因此不同的浏览器可能会有不同的JS引擎,导致对JS的...

Global site tag (gtag.js) - Google Analytics