web-javascript
java_zhaoyanli
不忘初衷,善始善终。
展开
-
使用数组打印乘法口诀
for(var r=1;r<=9;r++){ for(var i=1,arr=[];i<=r;i++){ arr[arr.length]=r+"x"+i+"="+(i*r); } console.log(str); } function right(ln){//ln共输出ln行 //公式:反复向str中拼接r个* for(var r=1;r<=ln;r++)原创 2016-03-07 23:39:16 · 554 阅读 · 0 评论 -
regExp 格式化
var birth="19831226"; var reg=/(\d{4})(\d{2})(\d{2})/; //在替换时,使用$n匹配每个分组匹配的部分关键词 birth=birth.replace(reg,"$1年$2年$3日"); console.log(birth); 控制台: 1983年12年26日原创 2016-03-09 22:30:51 · 215 阅读 · 0 评论 -
每个单词首字母变大写-replace
/*个单词首字母变大写*/ var str="you need to try,dear";//标点属于单词边界 var reg=/\b[a-zA-Z]+\b/ig; str=str.replace(reg,function(match){ return (match[0].toUpperCase()+match.slice(1)) ; }); console.log(s原创 2016-03-09 22:28:07 · 585 阅读 · 0 评论 -
计算字符串中每个字符出现的次数
var str="Hello World";//普通的方式/*var hash=[];//遍历str中每个字符for(var i=0;i//如果hash中包含key为当前字符的元素,就将hash中当前字符对应的元素值+11,//否则就将新建一个元素,以当前字符为keyif(hash[str[i]]!==undefined){//有hash[str[i]]++;/原创 2016-03-09 22:35:40 · 378 阅读 · 0 评论 -
删除空格
function ltrim(str){return str.replace(/^\s+/,"");}function rtrim(str){return str.replace(/\s+$/,"");}function trim(str){return str.replace(/^\s+|\s+$/g,"");}var str="\tzeng zhang\原创 2016-03-09 22:39:11 · 278 阅读 · 0 评论 -
双色球
function doubleBall(){var reds=[];var blue=null;//reds的个数while(reds.length//在1-33之间生成1个随机整数,保存在r中var r=parseInt(Math.random()*(33+1));//如果reds中不包含 rif(var reds.indexOf(reds)==-1){原创 2016-03-09 22:40:16 · 427 阅读 · 0 评论 -
高级替换
var str="那天,我去了她家,我说: 我草,你家真大\n"+ "她想和我去草地野餐\n"+"她说,我去去就来\n"+"我草草的收拾了桌子";var reg=/我[去草]+/g;str=str.replace(reg,function(match){//如果match是2个字,就返回"**",否则返回"***"return match.length==2?"**":原创 2016-03-09 22:36:41 · 512 阅读 · 0 评论 -
验证
var reg=/^(?![a-zA-Z]+$)(?![a-z0-9]+$)[a-zA-Z0-9]{6,}$/;//请用户输入密码,验证用户的密码,判断验证结果是否为falsewhile((reg.text(prompt("请输入密码:")))==false){alert("密码强度不够或包含特殊符号");}document.write("密码验证通过");原创 2016-03-09 23:30:30 · 280 阅读 · 0 评论 -
日期对象-Date
1. Date:2. *****Function1. Date: 封装一个时间,提供对时间操作的API 的对象 何时使用: 只要计算时间,就必须用Date对象 如何使用: 创建: 4种: 1. 创建一个日期对象,获得客户端当前系统时间: var date=new Date(); 2. 创建一个日期对象,封装自定义时间原创 2016-03-10 22:44:16 · 252 阅读 · 0 评论 -
两个日期对象--可相减
console.log(Number.MAX_VALUE/1000/3600/24/365);//297年var now=new Date();console.log(now.getTime());//取出日期中的毫秒数var birth=new Date("1993/07/17");//两个日期对象,可相见。结果:毫秒差。var days=parseInt((now-birt原创 2016-03-10 22:46:54 · 606 阅读 · 0 评论 -
/*模拟爬虫*/----------exec
/*模拟爬虫*/var html='标题一go to tmooc不能为空go to tedupanel';var reg=/]*?)href=['"](.*?)['"](.*?)>(.*?)/ig;var arr=null;//接住本次找到的a元素var urls=[];//保存本次找到的a//先调用reg的exec查找HTML中的a,将结果保存在arr中,再和null比较原创 2016-03-09 22:25:48 · 278 阅读 · 0 评论 -
动态生成正则表达式,查找所有数组中包含的人名
/*动态生成正则表达式,查找所有数组中包含的人名*/var names=["明明" ,"静静","李蕾","大王","苹果" ];var str="明明喜欢我,却不告诉我\n"+"别理我,我想静静\n"+"静静是谁\n"+"明明是谁\n"+"大王叫我来巡山\n"+"你是我的小呀兄啊苹果";//var reg=/明明|静静/g;这种太死板var reg=new R原创 2016-03-09 22:22:39 · 757 阅读 · 0 评论 -
切割一串地址
//切割,网游var msg="Tom@补给兵@60%#Mary@翼虎兵@80%#john@特种兵@30%";var persons=msg.split(/#/);//将msg按#切割,ye可以“#”//遍历persons中的每个子字符串for(var i=0;i//将persons中当前子字符串再按@切割,保存在变量props中var props=persons[i].s原创 2016-03-09 21:39:44 · 403 阅读 · 0 评论 -
使用循环打印各种变形三角形
//右三角 function right(ln){//ln共输出ln行 //公式:反复向str中拼接r个* for(var r=1;r<=ln;r++){ for(var i=1,str="";i<=r;i++){//负责控制次数 str+="*"; } console.log(str); } } //左三角原创 2016-03-07 23:42:00 · 758 阅读 · 0 评论 -
_StringAPI
API: 1. 转义字符: 将字符串中和程序冲突的字符转义为原文的特殊字符 何时使用: 只要字符串中包含和程序冲突的特殊符号时 如何使用: 1. 包含和程序冲突的特殊符号: 在特殊符号前加\,将符号转为原文 如果特殊符号就是\,要变成\\ 2. 字符串中包含特殊功能的符号: \n 换行 \t 制原创 2016-03-08 22:58:45 · 431 阅读 · 0 评论 -
大小写转换
大小写转换: 将字符串中每个英文字母统一转为大写或小写 何时使用: 只要程序不区分大小时,就要先转换,再比较 如何使用: var upper=str.toUpperCase(); var lower=str.toLowerCase(); var code="3EaS"; //请用户反复输入一个验证码,保存在input中原创 2016-03-08 23:02:45 · 676 阅读 · 0 评论 -
解码和编码
//获取字符,转为unicode var msg="今晚308,w84u"; function encode(msg){ //i从0开始,到<msg的length结束,同时声明空字符串codes for(var i=0,codes="";i<msg.length;i++){ //调用msg的charCodeAt方法,将i位置的字符转为unicode,并拼接到codes中原创 2016-03-08 23:11:32 · 394 阅读 · 0 评论 -
查找关键词----indexOf
var str="no zuo no die,no can no bibi"; //0123456789012345678901234567 //"no" //从前向后: //var i=-1; //while((i=str.indexOf("no",i+1))!=-1){ //console.log(i); //} //从后向前 var i=str.le原创 2016-03-08 23:12:57 · 685 阅读 · 0 评论 -
正则表达式:
1. ****正则表达式: 什么是: 定义字符串中字符出现规则的表达式 何时使用: 查找 替换 验证 如何定义正则: 1.最简单的正则: 关键词原文 2.备选字符集: 规定一位字符可用的备选字符列表何时使用: 如果规定字符串中一位字符可能出现的情况如何定义: [备选字符列表] 强调: 1. 一个中括号,只能匹配一个字!原创 2016-03-08 23:15:15 · 364 阅读 · 0 评论 -
正则表达式----search
//searchvar msg="那天,我去了她家。我说: 你美,你家真大";var reg=/你[美帅靓]/;//查找str中满足reg规则的关键词的位置,//如果没找到,返回-1var i=msg.search(reg);console.log(i==-1?"clear":"关小黑屋");原创 2016-03-08 23:18:05 · 488 阅读 · 0 评论 -
正则--match
var str="we two Who and who";var reg=/who/ig;//i 忽略大小写,g 查找全部//在str中找符合reg要求的关键词,组成数组var arr=str.match(reg);//***如果没找到,返回null***console.log(String(arr));console.log(//必须先判断不为空,再使用arr!=null原创 2016-03-08 23:18:54 · 257 阅读 · 0 评论 -
String 正则 API
1. 替换: 基本替换操作: str=str.replace(reg,"替换成的新内容");强调: 1. replace不修改原字符串,总是返回新字符串 2. reg一般都要加g如果不加g,只替换第一个匹配的关键词高级替换操作: str=str.replace(reg,function(match){根据math获得关键词,返回替换内容});原创 2016-03-09 21:28:56 · 419 阅读 · 0 评论 -
错误处理
错误处理: 当程序发生错误时,保证程序不会异常中断的机制 为什么: 程序默认只要碰到错误就会闪退,用户体验差! 如何错误处理: try{ 可能发生错误的代码段 }catch(err){ 如果发生错误,才执行的错误处理代码 }finally{ 无论是否发生异常,都会执行的代码段 }原创 2016-03-10 22:49:28 · 202 阅读 · 0 评论 -
判断浏览器兼容性:
判断浏览器是否支持Ajax对象: XMLHttpRequesttry catchif else try catch中的return1. finally中没有return 如果不出错,首先会确定try中return的结果 **再执行finally中的代码 最后返回结果 finally中原创 2016-03-10 22:51:07 · 522 阅读 · 0 评论 -
Object: 多个属性的集合
1. ****Object: 多个属性的集合 数据属性: 保存一个数值的属性 四大特性: 1. value: 专门保存属性的值 2. writable: 控制属性是否可修改 3. enumerable: 控制一个属性能被for in遍历到 强调: 依然可用.访问 4. configu原创 2016-03-15 00:11:31 · 604 阅读 · 0 评论 -
private 与 public的区别
*private vs public: 私有属性(private): 在对象外不能通过.直接访问的属性其实就是一个局部变量 公有属性(public): 在对象外,可通过.直接访问的属性同时定义共有属性和私有属性://共有属性 //私有属性 //1:先定义下构造函数 function Emp(id,ename,age){ //共有属性原创 2016-03-15 00:14:19 · 1025 阅读 · 0 评论 -
Object.create
Object.create(parent):三件事: 1. 创建一个对象 2. 继承指定父对象 3. 为新对象扩展新属性 何时使用create: 希望在创建对象时就提前指定继承的父对象,并同时扩展新属性时。 作业: 完成课堂练习: 1. 创建hmm对象继承father,同时扩展phone属性原创 2016-03-15 00:16:50 · 4076 阅读 · 0 评论 -
防篡改
防篡改: 对对象整体的保护 三个级别: 不可逆 1. 防扩展: 禁止扩展新属性其实就是设置对象的Extensible属性为falseObject.preventExtensions(obj); 尝试扩展新属性: 禁用 2. 密封对象: 防扩展的基础上,禁止配置或删除每个属性其实就是将每个属性的configurable设置为false原创 2016-03-15 00:19:15 · 2680 阅读 · 0 评论 -
数组API---EVERY,some,foreach
*****数组API 判断方法: var bool=arr.every(fun):用fun依次检查arr中每个元素,是否*都*符合条件 var bool=arr.some(fun)用fun依次检查arr中每个元素,是否*包含*符合条件 其中: fun的三个参数: 当前元素值value,当前元素位置index,正在检查的数组arr 返回值:原创 2016-03-15 00:22:54 · 382 阅读 · 0 评论 -
map实现原理-很重要
var arr1=[2,4,6,8,10]; var arr2=[1,2,3,4,5]; var arr3=[1,3,5,7,9];创建数组,复制元素只,对每个元素值进行加工 if(Array.prototype.map===undefined){ Array.prototype.map=function(fun){//this->arr3 //先创建空数组arr原创 2016-03-15 00:25:43 · 2142 阅读 · 0 评论 -
过滤原数组
过滤原数组,获得符合条件的元素组成的新数组:var subArr=arr.filter(fun)用fun检查arr中每个元素,将符合条件的元素保存到新数组subArr中其中,fun的定义和every/some完全一样!var subArr=arr2.filter(function(value,index,arr){ return value%2==0; }); con原创 2016-03-15 00:26:42 · 231 阅读 · 0 评论 -
汇总reduce
汇总reduce: 将数组中每个元素汇总出一个结果var result=arr.reduce(function(prev,value,index,arr{ 返回 将value汇总到prev上之后的值})eg: //如果只需要所有奇数的和 var result=arr2.reduce(function(prev,val,i,arr){ return p原创 2016-03-15 00:27:46 · 286 阅读 · 0 评论 -
bind方法
bind方法: 创建一个新函数,借用旧函数,并提前绑定this和参数值。 何时使用: 在创建方法时,就需要提前绑定this对象和参数值 如何使用: 2步: 1. 使用bind方法,基于现有函数创建新函数,并绑定this对象和部分参数值:var newFun=fun.bind(obj[,参数1,参数2,...]) 2. 调用newFun,传入剩原创 2016-03-15 00:28:40 · 5445 阅读 · 0 评论 -
面向对象的案例--闭包
---鄙视//笔试1 <function outer(){ //i是受保护的变量 for(var i=0,arr=[];i<3;i++){ arr[i]=function(){return i} }//3 return arr; } var funs=outer();//外层函数调用1次,只有一个i //funs:[ //function原创 2016-03-11 23:04:58 · 372 阅读 · 0 评论 -
汇率转换器
//工厂负责生产汇率计算器,但汇率需要在生产计算器前提前定义,并在计算器中保护起来。 function factory(rate){ //返回一个专门使用汇率计算金额的计算器 return function(money){ return (money*rate).toFixed(2); } } //游客甲,想买一个人民币转美元的计算器 var rmb2$=原创 2016-03-11 23:32:09 · 3404 阅读 · 0 评论 -
面向对象
*****面向对象: 什么是面向对象: 程序中都是用对象来描述现实中的一个事物 什么是对象: 程序中描述现实中一个具体事物的程序结构 包括: 属性和功能 为什么面向对象: 现实中所有数据都必须包含在一个事物中才有意义。 如何创建自定义对象: 封装: 将一个事物的属性和功能集中定义在一个对象中 现实中一个事物原创 2016-03-11 23:21:48 · 215 阅读 · 0 评论 -
Function:--js中创建函数的方法
js中函数都是一个对象,函数名都是引用函数对象的变量 创建函数: 3种: 1. 声明方式: function 函数名(参数列表){函数体}只有声明方式创建的函数,才能被声明提前 2. 函数直接量: var 函数名=function(参数列表){函数体} 3. new创建: var 函数名= new Function("参数1",原创 2016-03-10 22:53:06 · 437 阅读 · 0 评论 -
匿名函数
匿名函数: 创建函数时,不使用任何变量引用的函数 何时使用: 如果一个函数,只会执行一次! 为什么: 节约内存! 因为匿名函数对象,没有变量引用着 用完,立刻释放! 如何使用: 2种: 1. 自调: 函数定义完,立刻执行! (function(参数列表){ //函数体 })(); 2. 回调: 将函数作为对原创 2016-03-10 22:57:14 · 2550 阅读 · 0 评论 -
验证码
var chars=[];//保存所有的字符 //初始化备选字符数组 //填充数字字符 //i从48开始,到<=57结束,每次增1 for(i=48;i<=57;i++){ //将i转为字符,将字符压入chars中 chars.push(String.fromCharCode(i)); } //填充大写字母 for(i=65;i<=90;i++){原创 2016-03-10 22:58:16 · 261 阅读 · 0 评论 -
错误处理的案例
var n=123.456; var d=prompt("请输入小数位数"); /*try{//可能出错的代码 console.log(n.toFixed(d)); }catch(err){//出错才执行的代码 alert(err.message); //alert("小数位数必须在0-20之间"); }finally{//无论是否出错都执行的代码 cons原创 2016-03-10 23:03:21 · 229 阅读 · 0 评论