js代码

JavaScript学习笔记(五)js技巧

浪尽此生 提交于 2020-01-23 03:33:04
1. 安全的类型检测 Object.prototype.toString.call(value) // '[object Array]' 2.作用域安全的构造函数 function Person(name) { if (this instanceof Person) { this.name = name } else { return new Person(name) } } 继承 function Polygon(sides) { if (this instanceof Polygon) { this.sides = sides this.getArea = function() { return 0 } } else { return new Polygon(sides) } } function Rectangle(width, height) { Polygon.call(this, 2) //这里只是简单用Polygon给this添加一些属性而已的操作 this.width = width this.height = height this.getArea = function() { return this.width * this.height } } Rectangle.prototype = new Polygon() //

js高级技巧之高级定时器

天大地大妈咪最大 提交于 2020-01-23 03:30:03
实际上,浏览器负责进行排序,指派某段代码在某个时间点运行的优先级。 可以吧js想象成在时间线上运行的。 JavaScript中没有任何代码是立刻执行的,但一旦进程空闲则尽快执行。 1.重复的定时器: setInterval()的重复定时器存在两个缺点: (1)某些间隔会被跳过 (2)多个定时器的代码执行之间的间隔可能比预期的小; 假设,某个onclick事件处理程序使用setInterval()设置了一个200ms间隔的重复定时器。如果事件处理程序花了300ms多一点的时间完成,同时定时器代码也花了差不多的时间,就会同时出现跳过间隔且连续运行定时器代码的情况。 为了避免这个缺点,可以使用链式setTimeout()调用。 setTimeout(function() { setTimeout(arguments.callee, interval); },interval) callee是arguments的一个属性,指的是对函数对象本身的引用。 2.Yielding Processes 运行在浏览器中的JavaScript都被分配了一个确定数量的资源。 脚本长时间运行的问题通常是由两个原因之一造成的: (1)过长的、过深嵌套的函数调用。 (2)进行大量处理的循环。 for (var i = 0,len=data.length; i < len; i++) { process(data

反编译js的收获

谁说胖子不能爱 提交于 2020-01-23 01:09:57
最初只是加载一个谷歌插件试试别人的产品,随着深入的了解, 发现其在temp缓存目录生成了一些html+css+js等文件。 插件加载使用的时候,调用了debugger,阻止用户调试。 禁止断点: 而对应的操作是在 Chrome控制台 的 Source Tab页 点击 Deactivate breakpoints 按钮或者按下 Ctrl + f8 代码加密过了,读不懂,试着找找有没有解密方法。 根据代码关键字,找打到了一些相关资料: 1.某JS最牛加密脱壳解密破解去混淆工具。 2.记录一次 JS 解密去混淆的经历 -- 如何破解加密的 JS 代码(一) 3.JS 不可逆加密后半部分,去混淆还原代码。 4. https://www.sojson.com/jsobfuscator.html 起初用别人现成的解码代码试了试,简单几句js加密的可以解密,复杂的就不行了。 然后解读了大牛的记录,还是有不少地方值得学习借鉴。 其中有一段代码: })(qs_base_data, 202); 而大牛后来用的是:})(qs_base_data, 203);加了个一 我手上的代码是:}(qs_base_data , 0x1df));//0x1df=》479,但是这个位置要+1用480才能正确解密 其中一些 qs_base_data["push"] 替换为 qs_base_data.push :

用js写的自动完成功能AutoComplete

夙愿已清 提交于 2020-01-23 00:35:38
QQ上一个朋友让我帮忙用JS写一个自动完成的功能,类似ajax toolkit里面的autocomplete控件一样,可以象google的自动搜索一样。 http://www.asp.net/AJAX/Control-Toolkit/Live/AutoComplete/AutoComplete.aspx 但是又不愿意为了这一个控件而安装整个大包,给项目部署带来麻烦。 想想用js做起来也不难,我的想法是在input text的后面放一个div,然后把自动完成的一些数据放到div的table 中,然后通过正则表达式进行筛选,来达到过滤显示的效果,这样缺点是如果自动完成项目很多的话,最后生成的页面html代码会很长,不过对于简单的应用来说应该是够用了。有其他更好的方法可以讨论一下。 代码如下: < script type = " text/javascript " language = " javascript " > function onTD(obj) { obj.bgColor = ' #00ff00 ' ; } function outTD(obj) { obj.bgColor = ' #ffffff ' ; } function ShowDropDown(divName,inputText) { var div1 = document.getElementById

js循环/迭代/遍历有多少方法

拜拜、爱过 提交于 2020-01-22 18:48:38
js循环/迭代/遍历有多少方法 JavaScript中存在着很多循环的方法 常见的有 for,while,do while,for in 等, ES5中的 forEach , ES6的 for of , jquery中封装的 each for 局限性很大,通过累加数组索引,来输出数组中的值。一般用来遍历数组,不能遍历对象,因为对象的长度是undefined,无法作为其循环的条件。 let person = { name1 : "fur" , age : "1" , hobbies : { study : "code" , play : "games" } } let arr = [ 'fur' , 'furfur' , 'furfur-jiang' ] console . log ( "遍历对象结果:" ) console . log ( "person对象长度= " + person . length ) console . log ( "遍历数组结果:" ) for ( let i = 0 ; i < arr . length ; i ++ ) { console . log ( arr [ i ] ) } for - 循环代码块一定的次数 while - 当指定的条件为 true 时循环指定的代码块 do/while - 同样当指定的条件为 true 时循环指定的代码块

大熊君说说JS与设计模式之------命令模式Command

不羁的心 提交于 2020-01-22 18:30:55
一,总体概要 1,笔者浅谈 日常生活中,我们在看电视的时候,通过遥控器选择我们喜欢的频道时,此时我们就是客户端的角色,遥控器的按钮相当于客户请求,而具体执行的对象就是命令对象, 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 先给个具体事例,如下: 1 function add(x, y) { return x + y; } ; 2 function sub(x, y) { return x - y; } ; 3 function mul(x, y) { return x * y; } ; 4 function div(x, y) { return x / y; } ; 5 6 var Command = function (execute, undo, value) { 7 this.execute = execute; 8 this.undo = undo; 9 this.value = value; 10 } 11 12 var AddCommand = function (value) { 13 return new Command(add, sub, value); 14 }; 15 16 var SubCommand = function (value) { 17

IP掩码转IP段 JS与php实现

喜欢而已 提交于 2020-01-22 16:06:20
最近有个需求要校验IP掩码与输入的IP段是否重复,然后全网各种搜,终于集各家于大成。好了直接上代码【部分代码不记得出处了,没有标注,还望原作者见谅】 【JS部分】 //IP转成整型 function _ip2int(ip) { var num = 0; ip = ip.split("."); num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]); num = num >>> 0; return num; } //整型解析为IP地址 function _int2iP(num) { var str; var tt = new Array(); tt[0] = (num >>> 24) >>> 0; tt[1] = ((num << 8) >>> 24) >>> 0; tt[2] = (num << 16) >>> 24; tt[3] = (num << 24) >>> 24; str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]); return str; } //ip掩码转IP段 function subnet

JavaScript

痴心易碎 提交于 2020-01-22 09:23:06
文章目录 一、 JavaScript 概述 1. 什么是JavaScript 1) JS 介绍 2) JS 组成 2. 使用方式 二、基础语法 1. 语法规范 2. JS的变量与常量 1) 变量 2) 常量 3. 数据类型 1) 基本数据类型(简单数据类型) 2) 引用数据类型 3) 检测数据类型 4. 数据类型转换 1) 强制类型转换 2) 隐式类型转换(自动转换) 5. 运算符 1) 赋值运算符 2) 算数运算符 3) 符合运算符 4) 自增或自减运算符 5) 关系运算符/比较运算符 6) 逻辑运算符 7) 三目运算符 一、 JavaScript 概述 1. 什么是JavaScript 1) JS 介绍 简称JS,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行。主要用来实现网页的动态效果,用户交互及前后端的数据传输等。 2) JS 组成 核心语法 -ECMAScript 规范了JS的基本语法 浏览器对象模型 -BOM Browser Object Model,提供了一系列操作浏览器的方法 文档对象模型 -DOM Document Object Model ,提供了一系列操作的文档的方法 2. 使用方式 元素绑定事件 事件 :指用户的行为(单击,双击等)或元素的状态(输入框的焦点状态等) 事件处理:元素监听某种事件并在事件发生后自动执行事件处理函数。 常用事件

webpack详细步骤

北战南征 提交于 2020-01-22 09:08:22
前言 一直在用webpack,下面总结一下 入门(一起来用这些小例子让你熟悉webpack的配置) 1.1 初始化项目 新建一个目录,初始化npm npm init webpack是运行在node环境中的,我们需要安装以下两个npm包 npm i - D webpack webpack - cli npm i -D 为npm install --save-dev的缩写 npm i -S 为npm install --save的缩写 新建一个文件夹src ,然后新建一个文件main.js,写一点代码测试一下 console . log ( 'call me nanshen' ) 配置package.json命令 执行 npm run build 此时如果生成了一个dist文件夹,并且内部含有main.js说明已经打包成功了 1.2 开始我们自己的配置 上面一个简单的例子只是webpack自己默认的配置,下面我们要实现更加丰富的自定义配置 新建一个build文件夹,里面新建一个 webpack.config.js // webpack.config.js const path = require ( 'path' ) ; module . exports = { mode : 'development' , // 开发模式 entry : path . resolve ( _

js之juery

会有一股神秘感。 提交于 2020-01-22 08:11:50
目录 JQuery 属性选择器: 操作标签 文本操作 属性操作 文档处理 事件 JQuery 属性选择器: 属性选择器: [attribute] [attribute=value]// 属性等于 [attribute!=value]// 属性不等于 表单筛选器: $(":checkbox") //找到所有的checkbox属性 :text :password :file :radio :checkbox --按钮 :submit :reset :button --表单对象属性: :enabled :disabled :checked ( 选中) :seleted (select : 选中) 筛选器方法: 下一个元素: $('#id').next() --> $('#id').nextAll() $('#id').nextUntil() 上一个元素: $('#id').prev() $('#id').prevAll() $('#id').prevUntil() 父亲元素: $("#id").parent() $("#id").parents() // 查找当前元素的所有的父辈元素 $("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。 儿子和兄弟元素: $("#id").children();// 儿子们 $("#id")