js代码

js部分高级内容

守給你的承諾、 提交于 2020-03-27 06:06:01
数据类型 基本:String,Number,boolean(true,false),undefined(undefined),null(null) 引用类型:Object,Function(可以执行),Array(数值下标,有序) 特别地,null无值的对象(用来清空对象),NaN无值的数字,undefined不存在或者存在未赋值 typeof 返回数据类型的字符串形式(小写) 判断字符串,数值,布尔,函数可行。未定义和undefined都返回undefined也勉强可,null和其他引用类型返回object不可(null和undefined用===) instanceof判断实例对象与类(沿原型链向上找)的关系,返回布尔值 var声明局部变量(不可删),直接赋值沿原型链向上找成window的一个属性(可删) 沿作用域链找不到没定义报错,沿原型链找不到是undefined 只有通过属性改变的引用对象才使相同的改变 obj.age=15//有效 obj={age:15}//无效,更改了引用地址 function fn(obj){console.log(obj)}//函数传入的obj是传入参数的一个引用值,与原变量无关(重要),一种基本值,一种引用值(地址) 自动释放和垃圾回收器回收 function fn(){var b={name:'alice'}} //未被引用的才会被释放回收

JS逻辑语句

安稳与你 提交于 2020-03-27 05:56:14
·JS里的逻辑语句分为顺序语句,分支语句和循环语句。   1·顺序语句就是程序由上至下按顺序执行 没有分支和其他运行路线   2·分支语句是让程序根据条件不同来执行不同的代码 if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if (条件) { 只有当条件为 true 时执行的代码 } if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if (条件) { 当条件为 true 时执行的代码 } else { 当条件不为 true 时执行的代码 } if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行 if (条件 1) { 当条件 1 为 true 时执行的代码 } else if (条件 2) { 当条件 2 为 true 时执行的代码 } else { 当条件 1 和 条件 2 都不为 true 时执行的代码 } switch 语句 - 使用该语句来选择多个代码块之一来执行 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 } default 匹配不存在时执行;   3·循环语句:循环的执行某段代码; for - 循环代码块一定的次数

js合并两个数组的方法

旧巷老猫 提交于 2020-03-27 05:19:53
我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况。比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a、b,需求是将两个数组合并成一个。方法如下: 1、concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。 var c = a.concat(b);//c=[1,2,3,4,5,6]; 这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,所以这个方法肯定不是最好的。 2、for循环 大概的思路是:遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。直接上代码: for(var i in b){   a.push(b[i]); } 这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑!这么说不是没有道理,如果能只用一行代码就搞定,岂不快哉~ 3、apply 函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点,直接上代码: a.push.apply(a,b); 调用a.push这个函数实例的apply方法,同时把,b当作参数传入,这样a.push这个方法就会遍历b数组的所有元素

封装js

痴心易碎 提交于 2020-03-27 05:18:58
1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. ===============该文转自=========== http://www.jb51.net/article/21197.htm ============================== 复制代码 代码如下: function ShapeBase() { this.show = function() { alert("ShapeBase show"); }; this.init = function(){ alert("ShapeBase init"); }; } 这个类里定义了两个方法:show和init, 需要注意的是这里用到了this来声明, 而不是var, 因为用var是用来定义私有方法的. 另外, 我们还可以用prototype属性来定义Shape的方法. 复制代码 代码如下: ShapeBase.prototype.show=function() { alert("ShapeBase show"); } ShapeBase.prototype.init=function() { alert("ShapeBase init"); }

JS语句

a 夏天 提交于 2020-03-27 04:46:10
JS语句包括: 1.顺序语句 2.分支语句: if...else switch...case 3.循环语句 一.先看顺序语句: </body> <script type="text/javascript"> alert("hello"); </script> </html> 二.分支语句:if语句 1.最简单的if语句(如果赋予a的值<=10,那么这段代码就不会跳转页面显示出来) <script type="text/javascript"> var a = 12; if(a>10){ alert("A的值大于10"); } </script> 2.if...else <script type="text/javascript"> var a = 4; if(a>10){ alert("A的值大于10"); }else{ alert("A的值不大于10"); } </script> if...else的另一种写法: <script type="text/javascript"> var a = 4; /*if(a>10){ alert("A的值大于10"); }else{ alert("A的值不大于10"); }*/ if(a>10) alert("A的值大于10"); else alert("A的值不大于10"); </script> 3.if...else if...

js中的函数和循环

白昼怎懂夜的黑 提交于 2020-03-27 03:42:32
一. <1.什么是函数? : 一段定义好的代码,并可以被反复使用的代码块 <2.函数的作用: 提升代码的可复用性 将一段代码进行预定义 ,需要使用的时候才触发 代码块:形成了一个相对独立的作用域 <3.语法: function 函数名(参数列表){ 代码块(函数体) ==>待执行的代码块 return 返回值 返回执行的一些结果, 结束函数(程序碰到return之后,return后面的代码就不会执行了) 最多只能有一个返回值 1.函数的作用域 全局函数:一般是js写好的一些函数, 独立于任何function的位置处,位于JS的最外层 局部函数:在一个函数内部定义的函数 2.变量的作用域 什么是作用域? :范围 变量的生命周期 JS中作用域的分类: <1.函数作用域 该变量只在当前作用域中可以访问 只有在当前函数中能访问,离开函数无法访问 在函数体中使用var关键字定义的变量才是局部变量 <2.全局作用域 一经定义 ,在代码中的任何位置都能访问到 在函数体中不通过var关键字定义且赋值了的变量 ,就会成为全局变量 3.分支结构 程序 = 数据结构 + 算法 任何复杂的算法都有以下几种结构: <1、顺序结构 <2、分支选择结构 <3、循环结构 4.分支结构:满足不同的条件执行不同的程序 if分支:当条件满足时,运行某些语句 语句可能会执行 if...else...分支:当条件满足时

我的服务端JS文件合并工具

纵然是瞬间 提交于 2020-03-27 02:46:00
  静态资源合并,老生常谈的话题了,目的就是减少http请求数,至于为什么要减少http请求大家应该都有所了解,这里就不多赘述,近期由于项目需要,自行开发了一个文件合并工具,由于源码在公司研发网络拿不出来,见谅!这里介绍一下工具的开发过程和大概实现思路,第一次发文到首页,请兄弟们多多指点。 最终效果,先睹为快^_^ 最终合并后的效果      项目编译时自动合并所有js文件   经过测试:解析488个jsp文件,最终将314个js文件合并为77个,用时在一秒以内,因此打包时不会耗费太长时间。 对现有几个开源合并工具的分析   起初,本着不重复造轮子的想法,我也曾对现有的一些比较成熟的工具进行过分析: 1、minify: 相关介绍   Minify 是用PHP5开发的应用,它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏览器的缓存头。 合并、压缩、缓存都有了,功能上基本已经能够满足现有要求,但是比较麻烦的是它是用php开发的,我们项目使用的是java,因此还需专门为其搭建一个php运行环境,再分配一个子域名用于内部请求。 2、nginx_concat_module: 相关介绍   淘宝的开源nginx模块,在url中加入需要合并的文件路径以逗号隔开,使用两个问号“??”来触发文件的合并功能。   优点

JS正则表达式

泄露秘密 提交于 2020-03-27 00:11:00
var matches = pattern1.exec(text); console.log(matches.index); //0 console.log(matches[0]); //cat console.log(pattern1.lastIndex); //0 matches = pattern1.exec(text); console.log(matches.index); //0 console.log(matches[0]); //cat console.log(pattern1.lastIndex); //0 var pattern2 = /.at/g; var matches = pattern2.exec(text); console.log(matches.index); //0 console.log(matches[0]); //cat console.log(pattern2.lastIndex); //3 var matches = pattern2.exec(text); console.log(matches.index); //5 console.log(matches[0]); //bat console.log(pattern2.lastIndex); //8 复制代码 注意:IE的JavaScript实现lastIndex属性上存在偏差

JavaScript基础(笔记)

时光怂恿深爱的人放手 提交于 2020-03-26 22:51:10
1.3JavaScript基础 1.3.1DOM的相关知识 DOM的含义:Document Object Model,文档对象模型, 文档:指的是标记文档(html ,xml) 対象:可以使用dom里面的相关属性和方法来解析标记性文档. Dom的组成:核心Dom,Html Dom ,XML Dom. Dom如何解析html文档: DOM会根据html的层级结构,在内存中形成一个树形结构,树形结构里面有标记元素和属性文本等元素, 整个html文档对应一个document对象,通过document文档对象, 可以操作html里面得到所有元素。 2.节点的访向: 节点対象. childNodes :获取该节点的所有子节点。 节点対象. parentNode:获取该节点的父节点。 3.荻取文档中的元素: 下面的方法是html dom的方法 根据标记的id属性值获取元素对象: document.getElementById(id属性对应的值); 根据标记的名称获取元素对象: document.getElementsByTagName(标记的名称); 根据标记的name属性值获取元素对象: document. getElmentsByName(name属性对应的值); 1.3.2 JavaScript概述 什么是js:它是基于对象和事件驱动的语言,它应用于客户端。 基于对象

前端js导出CSV,Excel格式文件

穿精又带淫゛_ 提交于 2020-03-26 12:21:07
通过自己实际测试有以下几种方法 方法一通过a标签实现,把要导出的数据用“\n”和“,”拼接成一个字符串,然后把字符串放到href中,这种方法只支持chrome,firefox等非ie浏览器 html页面代码如下 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="author" content="oscar999"> <title>导出CSV文件</title> <script> function exportCsv(obj){ //title ["","",""] var title = obj.title; //titleForKey ["","",""] var titleForKey = obj.titleForKey; var data = obj.data; var str = []; str.push(obj.title.join(",")+"\n"); for(var i=0;i<data.length;i++){ var temp = []; for(var j=0;j<titleForKey.length;j++){ temp.push(data[i][titleForKey[j]]); }