js

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中获取对象的所有key值

别等时光非礼了梦想. 提交于 2020-03-27 05:36:55
Js中获取对象的所有key值 假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for(var key in obj){ console.log(key,obj[key]) } 输出: A 2 B Ray C true D function (){} 如果只是想获取所有的key值,用上面的方法也行得通。 但有更简单的方式:Object.keys(...),返回值是包含key的数组(IE9及以上可支持 Chrome与FF自不必说) Object.values() //获取所有的value值 Object.entries() //分别将keys 和 values 放到两个数组中 如 console.log(Object.keys(obj)) 输出: ["A", "B", "C", "D"] 假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for(var key in obj){ console.log(key,obj[key]) } 输出: A 2 B Ray C true D function (){} 如果只是想获取所有的key值

js 删除数组的某一项或者几项的方法

回眸只為那壹抹淺笑 提交于 2020-03-27 05:23:37
1、arr.splice() splice(index,len,[item]) 注释:该方法会改变原始数组。 splice有3个参数,它也可以用来 替换/删除/添加 数组内某一个或者几个值 index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空 如:arr = ['a','b','c','d'] 删除 ---- item不设置 arr.splice(1,1) //['a','c','d'] 删除起始下标为1,长度为1的一个值,len设置的1,如果为0,则数组不变 arr.splice(1,2) //['a','d'] 删除起始下标为1,长度为2的一个值,len设置的2 替换 ---- item为替换的值 arr.splice(1,1,'ttt') //['a','ttt','c','d'] 替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1 arr.splice(1,2,'ttt') //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1 添加 ---- len设置为0,item为添加的值 arr.splice(1,0,'ttt') //['a','ttt','b','c','d'] 表示在下标为1处添加一项‘ttt’ 2、 splice(index,len,[item]) 注释

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自定义类和对象及继承

…衆ロ難τιáo~ 提交于 2020-03-27 05:19:36
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Object(); p.name=name; p.say = function(){alert(p.name+'ff');} return p; } var p1 = createObject("p1"); var p2 = createObject("p2"); alert(p1.name+" "+p2.name); p1.say();p2.say(); alert(p1.say==p2.say); //false </script> 问题:每创建一个对象,对象的方法是新对象,浪费资源 2、构造函数方式 <script type="text/javascript"> function Person(name){ this.name = name; this.say = function(){ alert("I am "+this.name); } } var p1 = new Person("wang"); var p2 = new Person("li"); p1.say(); p2.say(); alert(p1.say==p2.say); //false </script> 问题: 创建对象时比工厂方法更易于理解。

js自定义类几种方式

丶灬走出姿态 提交于 2020-03-27 05:19:20
1、工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Object(); p.name=name; p.say = function(){alert(p.name+'ff');} return p; } var p1 = createObject("p1"); var p2 = createObject("p2"); alert(p1.name+" "+p2.name); p1.say();p2.say(); alert(p1.say==p2.say); //false </script> 问题:每创建一个对象,对象的方法是新对象,浪费资源 2、构造函数方式 <script type="text/javascript"> function Person(name){ this.name = name; this.say = function(){ alert("I am "+this.name); } } var p1 = new Person("wang"); var p2 = new Person("li"); p1.say(); p2.say(); alert(p1.say==p2.say); //false </script> 问题: 创建对象时比工厂方法更易于理解。

封装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中加入需要合并的文件路径以逗号隔开,使用两个问号“??”来触发文件的合并功能。   优点