一、使用 JS 完成注册表单数据校验 1.需求分析 用户在进行注册的时候会输入一些内容,但是有些用户会输入一些不合法的内容,这样 会导致服务器的压力过大,此时我们需要对用户输入的内容进行一个校验(前端校验和后台...三 、使用 JS 完成页面定时弹出广告 1.需求分析 我们希望在首页中的顶部做一个定时弹出广告图片。...> //警告框 //alert("aaa"); //确认按钮 //confirm("您确认删除吗?")...Location 对象包含有关当前 URL 的信息。 href:该属性可以完成通过 JS 代码控制页面的跳转。...(该对象开发中不怎么常用) ** Screen 对象** Screen 对象包含有关客户端显示屏幕的信息。(该对象开发中不怎么常用) 五 、使用 JS 完成注册页面表单校验 JS的事件 ?
---- 本文简介 记得以前看爆笑校园里有一集讲到,一个人对着前面开了一枪,过了一阵子弹打中他自己的后脑勺。作者想通过这个冷笑话告诉大家一件事:地球是圆的。...如果想让 Matter.js 世界变成“圆”的,可以使用 matter-wrap 这个插件。 matter-wrap 是什么?...简单来说,它可以让 matter.js 创建出来的场景变成一个循环的场景。当物体穿越边界后,会从另一个边界出现。同时还保存它自身的速度和其他物理特性。...根据你的项目而定吧~ CDN 可以打开 matter-wrap 仓库 matter-wrap.js 和 matter-wrap.min.js 这两个文件,下载下来然后引入到项目中即可。...在 《物理世界的互动之旅:Matter.js入门指南》 里有讲到如何使用 matter.js 创建画布和物体,这里我就不再啰嗦了。
JS 数组常用的方法(个人感觉) 1. forEach() 循环,无法在中间停止 2. some() 循环,找到符合条件的之后,可以通过 return true 退出循环 3. every() 测试数组中的所有元素是否都能通过某个指定函数的测试...item) => (amount += item.price * item.count), 0); console.log(amount); //返回70 6. map() map()方法把调用它的数组的每一个元素分别传给指定的函数...(11, 22)); // unshift()在数组的开头添加元素,并返回数组的新长度 console.log(a); console.log(a.shift()); // shift()删除数组开头的元素...,第二个参数是要删除的元素个数,之后的参数是要插入的元素,返回删除的数组 console.log(a); console.log(a.slice(3)); // 只有一个参数,则删除数组开头到起点的全部元素...回调函数的格式是 (a, b) => { // a, b是数组中任意两个数 return xxx; }; 当返回值大于 0 时,a 排在 b 的后面; 当返回值小于 0 时,a 排在 b 的前面
如果参数是 Javascript 语句,eval() 将执行 Javascript 语句,经常被用来动态执行 JS。...以下代码执行后,之后所有的 eval() 操作都会在控制台打印输出将要执行的 JS 源码:(function() { // 保存原始方法 window....__cr_eval(src); } // 屏蔽 JS 中对原生函数 native 属性的检测 var _myeval = myeval.bind(null); _myeval.toString...JS 源码:(function() { // 保存原始方法 window....__cr_fun.apply(this, arguments); } // 屏蔽js中对原生函数native属性的检测 myfun.toString = function() {
这么简单的代码为什么会出错呢?第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...大宗师Douglas Crockford表示要正确使用分号 引用minhan在扯不完的 JS 分号问题文中的论述: JSON、JSLint、JSMin和ADSafe 的创造者、ECMA JavaScript...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号...) 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。...版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2018/09/18/js-semicolon-bug/
为什么80%的码农都做不了架构师?...(); dd.setDate(dd.getDate()); var y = dd.getFullYear(); var m = dd.getMonth()+1;//获取当前月份的日期...m="0"+m; } if(d<10){ d="0"+d; } return y+"-"+m+"-"+d; } /** *获取下一个月的输入日期...var month = dateArr[1]; //获取当前日期的月份 var day = dateArr[2]; //获取当前日期的日 var days = new Date(year, month..., 0); days = days.getDate(); //获取当前日期中的月的天数 var year2 = year; var month2 = parseInt(month) + parseInt
改变原数组的方法 shift() 把数组的第一个元素从其中删除,并返回第一个元素的值, 如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。...该方法会改变数组的长度。 unshift() 可向数组的开头添加一个或更多元素,并返回新的长度。...unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。...该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。该方法会改变数组的长度。...pop() 删除并返回数组的最后一个元素,该 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
js中常用的内置对象 写在前面 今天学习完了JavaScript的基本语法,接下来开始学习Dom操作!...); // 4 返回添加之后的长度 // 第二种,unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。...,并返回该元素的值。...数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。...,有小部分内容为了节省时间吗,搬运了小部分,仅做笔记使用,侵删 在寻求真理的长河中,唯有学习,不断地学习,勤奋地学习,有创造性地学习,才能越重山跨峻岭。
以下是一些常用的方法: 1....3.使用库: lodash库的_.cloneDeep方法: import _ from 'lodash'; const newObj = _.cloneDeep(oldObj); ramda库的cloneDeep...方法: import R from 'ramda'; const newObj = R.cloneDeep(oldObj); 这些库提供了许多实用的函数,但会增加项目的依赖。...hash); } }; let cloneObj = new Proxy(obj, handler); return cloneObj; } 这种方法是最强大的,...每种方法都有其优点和局限性,应根据具体需求选择合适的方法。
function(event) { if (event.ctrlKey && event.key === "s") { event.preventDefault(); // 阻止默认的保存操作...// 在这里添加你想要执行的函数或代码 console.log("Ctrl+S 被按下"); } });
关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较。...left.length > 0 && right.length > 0) { if (left[0] < right[0]) { // shift()方法用于把数组的第一个元素从其中删除...,并返回第一个元素的值 result.push(left.shift()); } else { result.push(right.shift
好记性不如烂笔头,又重新回顾了一遍设计模式,虽然仅仅掌握了几种熟悉的设计模式,但是希望在复杂的业务上,能想起那些不太常用的设计模式。 正文开始......条件,这是业务代码里常用的一种方式 const obj = { a: function() {}, b: function() {} } const fn = (target) => {...,在某些特殊业务场景这些设计模式的思想会大大增强我们代码的拓展性,但过度的设计模式也会带来一定的阅读负担,凡事不可追求两全其美,只需要适可而止。...总结 常用的设计模式,比如说单例模式,单例就是只对外暴露一个实例,所有的内部方法都是通过这个实例访问 策略者模式是一种多条件的优化模式,当你在条件判断很多时,可以考虑策略者模式 工厂模式,主要通过一个中间函数...,通过形参输出对应的对象 装饰器模式,主要是扩展对象的多个功能能力 观察者模式也是发布订阅模式,主要有发布对象与订阅对象,订阅者监听发布对象的通知,做出响应,发布对象是有重要通知,统一通知所有订阅者 另外看到一个利用闭包实现一个函数的
2.当把一个值在超出当前数组大小的位置的时候,数组机会重新计算其长度,长度值等于最后一项的索引值。 3.数组的属性 属性 描述 constructor 返回对创建此对象的数组函数的引用。...4.数组对象的方法 4.1添加属性: 1.push():将数组添加到原数组末尾,并返回数组的长度。 ...特性 如果是负数,则用数组长度加上该值确定位置 起始位置实为数组的实际下标 结束位置的实际下标为结束数值减1 3.join():用于把数组中的所有元素放入一个字符串; 4.4数组排序: 1....reverse():用与颠倒数组中的顺序。 ...2.sort():用于对数组中的元素进行排序。 2.1:即使数组中的每一项都是数组,sort方法比较的也是字符串。 2.2:sort()方法可以接受一个比较函数作为参数。
(); 加载语言 moment.locale('zh-cn'); UTC 获取UTC moment().utc(); UTC偏移量 moment().utcOffset(); 设置偏移量 以下是相同的...).set('second', 30); moment().set('millisecond', 123); moment().set({'year': 2013, 'month': 3}); 星期的取值和赋值...next Wednesday (3 + 7) moment().day(24); // 3 Wednesdays from now (3 + 7 + 7 + 7) 按区域标准 // 比如周一是一星期的第一天
它就完成一些很强大的功能。 函数调用call方法默认可以改变函数内部的this指向。 它的第一个参数,是this改变后指向的对象,后面的参数对应函数执行的参数。...2,apply() apply的用法和call很像,它的第一个参数依旧是改变函数执行的时候的this指向,不同的是,函数执行的时候的各个形参,需要被放在一个数组里面,做为执行时候的第二个参数。...,它有延迟执行的特点,它返回一个新的函数。...bind()的第一个参数代表函数执行的this的指向,后面的参数可以用来执行函数执行时候的形参。...当绑定函数被调用时,这些参数会被插入到目标函数的参数列表的开始位置,传递给绑定函数的参数会跟在它们后面。
碰撞检测 在边界检测中,我们检测的是“物体与边界”之间是否发生碰撞;而在碰撞检测中,检测的则是“物体与物体”之间是否发生碰撞。 碰撞检测常用的两种方法:外接矩形判定法和外接圆判定法。...外接圆判定法,指的是如果检测物体是一个圆或者近似圆,我们可以把这个物体抽象成一个圆,然后用判断两个圆是否碰撞的方法进行检测。...对于外接圆判定法,一般也需要两个步骤,即找出物体的外接圆然后对外接圆进行碰撞检测。 判断两个圆是否发生碰撞,只需要判断两个圆心之间的距离。...如果两个圆心之间的距离大于或等于两个圆的半径之和,则两个圆没有发生碰撞;如果两个圆心之间的距离小于两个圆的半径之和,则两个圆发生了碰撞。...true : false; } 示例:两个球碰撞 //tools.js //判断两个圆形是否发生碰撞 tools.checkCircle = function(circleB, circleA){
// 方法1 对象直接量 var obj1 = { v1 : "", get_v1 : function() { return ...
return fomatType; } 使用方法 formatDate('YYYY-mm-dd HH:MM:SS',new Date('2019-09-22')) 3、计算两个日期之间相差的天数...1; } 使用方法 dateDiffIncludeToday(new Date('2020-09-22'),new Date('2020-11-22')) // 62 4、计算两个日期之间相差的天数...dateDiff(startDate, endDate) { return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
JS 异步编程并发(concurrency)和并行(parallelism)区别这两个名词确实是很多人都常会混淆的知识点。其实混淆的原因可能只是两个名词在中文上的相似,在英文上来说完全是不同的单词。...在接下来的几小节中,我们将来学习通过别的技术解决这些问题。GeneratorGenerator 算是 ES6 中难理解的概念之一了,Generator 最大的特点就是可以控制函数的执行。...常用定时器函数异步编程当然少不了定时器了,常见的定时器函数有 setTimeout、setInterval、requestAnimationFrame。...我们先来讲讲最常用的setTimeout,很多人认为 setTimeout 是延时多久,那就应该是多久后执行。...其实这个观点是错误的,因为 JS 是单线程执行的,如果前面的代码影响了性能,就会导致 setTimeout 不会按期执行。
str == ""){ return false; } return true; } 1.2、校验是否为纯数字 /* * 校验是否为纯数字 * js...的isNaN函数 */ var checkNum = function(num){ if(isNaN(num)){ return false; }...= (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())){ return false;//身份证上的出生日期非法...reg.test(charValue)){ return false; } return true; } 1.13、检测密码强度 // nowLv表示密码的强度
领取专属 10元无门槛券
手把手带您无忧上云