js代码

js 类数组arguments详解

混江龙づ霸主 提交于 2020-01-25 18:10:53
arguments并不是一个真正的数组,而是一个“类似数组(array-like)”的对象; 就像下面的这段输出,就是典型的类数组对象: [12, 23, callee: ƒ, Symbol(Symbol.iterator): ƒ] 一、类数组 VS 数组 相同点: 都可用下标访问每个元素 都有length属性 不同点: 数组对象的类型是Array,类数组对象的类型是Object; 类数组对象不能直接调用数组API; 数组遍历可以用for in和for循环,类数组只能用for循环遍历; function calc(){ console.log(arguments); // ["sky", "moon", callee: ƒ, Symbol(Symbol.iterator): ƒ] console.log(arguments[0]); // sky console.log(arguments.length); // 2 // arguments.pop(); // 报错,arguments.pop is not a function } calc('sky', 'moon'); 类数组对象转为数组对象方法: Array . prototype . slice . call ( arguments ); function calc(){ var newArr = Array

day04 js 匿名函数 BOM中的操作 client offset scroll

一个人想着一个人 提交于 2020-01-25 17:57:39
day04 js 匿名函数 BOM中的操作 client offset scroll 一.匿名函数 1.匿名函数的自执行 1.1.在js中叫做闭包, 和python中的闭包不是一个事 1.2.为什么要用这个? 解决了全局污染的问题 1.3.什么是全局污染? 如果两个相同名字的变量a是两个js文件中的两个不同的功能, 我想同时使用这两个不同功能的a,就会出现压盖现象(就是全局污染) 1.4.语法: (function(){ ... })() (function (window) { var a = 111; window.$1 = a; })(window); (function (window) { var a = 222; window.$2 = a; })(window); console.log(window.$1); console.log(window.$2); 1.5.有个问题: 全局污染貌似不是函数的自执行解决的,而是相同名字不同功能的a重新赋值给了其他变量解决的 2.单例模式 单例模式: 当多个文件导入同一个模块时, 这个模块只会在内存中创建一次, 多个文件里的这个模块使用的是同一个内存地址: 如python中的导入模块 非单例模式: 如js中的new 二. BOM中的操作 1.client 客户端: 1.1.内容的可视区域:盒子里的内容区域 objDiv =

js抽奖实现随机抽奖代码效果

谁说我不能喝 提交于 2020-01-25 14:45:44
<html> <title>随机抽奖程序</title> <head><meta http-equiv=Content-Type content="text/html; charset=gb2312"> </head> <body> <script type="text/javascript"> var alldata = "a,b,c,d,e" var alldataarr = alldata.split(","); var num = alldataarr.length-1 ; var timer function change() { document.getElementById("oknum").innerHTML = alldataarr[GetRnd(0,num)]; } function start(){ clearInterval(timer); timer = setInterval('change()',10); } function ok(){ clearInterval(timer); document.getElementById("showresult").value=document.getElementById("oknum").innerText; } function GetRnd(min,max){ return parseInt(Math

ajax异步加载jqgrid之动态创建

独自空忆成欢 提交于 2020-01-25 14:36:41
之前写过一篇过于ajax异步加载jqgrid的文章,那个只是一个特殊的情况,如果创建不同数据库表的jqgrid,必须分别写servlet,dao层和连接池,很麻烦,今天我写了一个万能的写法,客官只要在前台js中写入表格名称和字段名称即可实现功能! 下面就是代码实例,关于jqgrid,ajax的介绍这里暂时不多说,有不懂的可以参考我之前的文章! 代码实例 JSP层 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>定义>类型</title> <link rel="stylesheet" href="css/homepage.css"> <link type="text/css" rel="stylesheet" href="css/bootstrap.min.css"> <link type="text/css" rel="stylesheet" href="js/JqGrid/css/font-awesome.min.css"> <link type="text/css" rel="stylesheet"

使用 nodeJs 实现 js/ts 文件翻译功能

核能气质少年 提交于 2020-01-25 09:08:19
使用 nodeJs 实现 js/ts 文件翻译功能 一、搭建环境 二、读文件 三、列出文中的所有中文内容 四、替换中文 五、实现翻译功能 关于实现翻译(已中翻英为例)的功能,我们可以分成几个步骤: 读文件 找出文中的中文 将文中的出现的中文词组或者句子组成一哥数组 调用公共的翻译接口进行异步翻译 将翻译出来的英文回填会文件中 一、搭建环境 打开终端,键入: node -v 如果出现 -bash: node: command not found 说明 node 的环境没有搭建。请到 官网 上下载。 如果终端上出现: v10.16.0 类似这样的版本号,说明你的 node 环境搭建好啦。 二、读文件 我们先读取固定的文件,后面我们会尝试实现翻译上传的文件,有需要的小伙伴可以移步到后面的内容。 首先我们在文件夹下创建一个 replace.js 文件用来编写我们的代码。 其次创建一个供我们翻译的 js/ts 文件,如: DesUtils.ts ,代码如下: const desKeyObj = { desKey : 'ztesoftbasemobile20160812..' , ivKey : '01234567890' } export default { /** * 加密 * @param dataStr */ encrypt : function ( dataStr ) { try {

JAVASCRIPT、JSP、JS有什么区别和联系

自闭症网瘾萝莉.ら 提交于 2020-01-25 08:07:55
JAVASCRIPT、JSP、JS有什么区别和联系 js是javascript的缩写。以下是JSP与JS的区别和联系: 名字:JS:JavaScriptJSP:Java Server Pages 执行过程:JSP先翻译,翻译成Servlet执行如: test.jsp 要变成 test_jsp.java 然后编译成 test_jsp.class而 test_jsp.java 本身就是一个servlet.所以 jsp只是servlet的一个变种,方便书写html内容才出现的。servlet是根本,所有jsp能做的,servlet全能做。 JS:是一种基于对象的客户端脚本语言。目的是解决服务器端语言。如:Perl,遗留的速度问题,为客户提供更流畅的浏览效果。JS可以直接嵌入到html代码中进行解析执行,非常简单易学,可以产生很多动态的效果。 形象比较:JS是在客户端执行的,需要浏览器支持JavaScript。JSP是在服务器端执行的,需要服务器上部署支持Servlet的服务器程序。JS代码能够直接从服务器上download得到,对外是可见的,jsp(和翻译后的Servlet代码)是对外不可见的。 JS和JSP相比较:虽然JS可以再客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务。如:访问数据库和图像处理等等。JSP在HTML中用<% %>里面实现

性能优化浅谈

守給你的承諾、 提交于 2020-01-25 02:50:00
不知不觉已经正式上班大半年了,去年的这个时候刚开博客不久,希望能伴随自己成长。在大半年的学习和工作中,自己也在一步步的开始沉静,越加觉得自己才疏学浅,也倍感前端知识博大精深。 这次总结主要关于性能优化探索心得。水平很浅,只是说说自己的学习收获。 ************这里开始了************* 看过的前端开发书籍都在说这四个字,性能优化的字面解释是:不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。这句话可以看出性能优化的目的:更快的速度、更少的时间。 1)性能优化有什么意义? 谷歌的数据表明,一个有10条数据0.4秒可以加载完的页面,在变成30条数据加载时间为0.9秒后,流量和广告收入减少了20%。当谷歌地图的首页文件大小从100kb减少到70~80kb时,流量在第一周涨了10%,接下来的三周涨了25%。腾讯的前端工程师根据长期的数据监控也发现页面的一秒钟延迟会造成9.4%的PV的下降,8.3%跳出率的增加以及3.5%转化率的下降。这两家公司都是行业的翘楚,具有极其巨大的用户群,这些数据足够让我们重视性能优化。近八成的用户可以忍受的响应时间为5秒,500PC的主站打开资源加载完毕的时间为5.67s,QQ彩票为12.75s,网易彩票为16.79,看到这里还是很骄傲的*_*。   2)如何优化? 资料显示和浏览器调试分析发现

js 数组对象的方法 常用API

泄露秘密 提交于 2020-01-25 01:04:08
改变原数组的 ES5 push() //向数组的末尾添加一个或多个元素, 返回新数组长度 语法: arr.push(element1[, ...[, elementN]]) pop() // 用于删除并 返回数组的最后一个元素 如果数组为空,返回undefined 语法: arr.pop() unshift() //返回新数组长度 shift() // 删除并 返回数组的第一个元素 如果数组为空,返回undefined 语法: arr.shift() sort() // 对数组的元素进行排序, 返回改变后的数组 语法: arr.sort([compareFunction]) 注意:compareFunction 指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个字符的Unicode代码点值进行排序。 reverse() // 用于颠倒数组中元素的顺序, 返回改变后的数组 语法: arr.reverse() splice() // 向数组中添加/删除/替换项目,返回删除的元素,如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。 语法: array.splice(start[, deleteCount[, item1[, item2[, …]]]]) ES6 copyWithin() // 在当前数组内部,

在pycharm中使用protobuf

廉价感情. 提交于 2020-01-24 23:31:41
文章目录 主要目标 在pycharm中使用protobuf 1. 工具安装 1.1 下载protoc 1.2. pycharm中安装插件 1.3 安装对应库 2. 使用 2.1 编写proto文件 2.2 转化为指定语言的文件 将protobuf中的枚举类型转换为JS对象 1. 问题来了 2. proto文件转js脚本 主要目标 记录在pycharm中使用protobuf的过程 将protobuf中的枚举类型转换为JS对象 在pycharm中使用protobuf 1. 工具安装 1.1 下载protoc 下载适合自己系统版本的protoc 点击链接 建议将protoc将入环境变量中,便于使用 1.2. pycharm中安装插件 在pycharm中可以编辑.proto文件,但是需要安装protobuf support插件 1.3 安装对应库 python版本 pip install protobuf 2. 使用 2.1 编写proto文件 具体语法规范还是看教程吧,木有整理,直接贴代码。 message_proto.proto文件 syntax = "proto3"; // package top.huanmengmie; // 定义包名 enum ErrorCode{ Failed = 0; Success = 1; // 请求成功 ParamInvalid = 10; //

Javascript 异步实现 & 事件循环

不问归期 提交于 2020-01-24 22:37:20
浏览器的进程和线程 一、js的单线程和异步 js的单线程(single threaded)和异步(asynchronous)两个基本矛盾的概念是怎么整合到js上的 首先必须肯定js本身不可能是异步的,但js的宿主环境(比如浏览器,Node)是多线程的 宿主环境通过某种方式(事件驱动)使得js具备了异步的属性 二、浏览器的进程 浏览器的主进程 :负责协调、主控 第三方插件进程 :每种类型的插件对应一个进程,仅当使用该插件时才创建 GPU进程 :最多一个,用于3D绘制等 浏览器渲染进程 (浏览器内核):主要作用为页面渲染,脚本执行,事件处理等 三、浏览器内核线程 1、JS引擎线程 JS引擎一直等待着任务队列中任务的到来,然后加以处理 一个Tab页中无论什么时候都只有一个JS引擎在运行JS程序 2、GUI渲染线程 GUI渲染线程与JS引擎线程是互斥的 当JS引擎执行时GUI线程会被挂起 GUI更新会被保存在一个队列中等到JS引擎空闲时执行 3、定时器线程 传说中的setInterval与setTimeout所在线程 二者的定时计数功能不是由JS引擎完成的,而是通过 单独的线程 来完成的,从而保证计时准确 计时完毕,将回调添加到事件队列中,等待JS引擎空闲执行 4、事件触发线程 点击事件等会在对应条件触发的时候被添加到事件队列,等js引擎空闲执行