走火入魔 – javascript call apply 实现继承

上一博文说到了 javascript 中的原型继承,还说到了和大家分享 call , apply 实现继承,所以,就有了这篇博文.我们还是定义一个person 类 和一个 student 类,如下上面的student 类的构造函数传入了3个参数,当我们用call 实现 student 继承 person 的时候时,person的构造函数只实现了2个参数的传入,所以第三个参数必须要student自己来实现.及学生有了成绩的这个属性.student 类还重新定义eat 方法,到底之类重写父类的方法时,父类的同名方法会不会被覆盖? call 能不能实现 student 继承 person ? 这些疑

javascript 字符串和时间类型相互转化

常见的时间类型字符串:vardate1="2014-03-0912:00:00";javascript 对 类似上面这种时间转化不感冒,它更青睐的是这种字符串格式的时间 "2014/03/09 12:00:00" ,我们姑且称作date2所以有种非常简单的方法就是将 date1 的格式转换成 date2 的格式然后再转化时间类型.如下vartime1=newDate(Date.parse(date1.replace(/-/g,"/")));上面一行代码实现了date1 转 时间类型.求时间差方法:var days=time1-time

linux 下 wget命令使用帮助

Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。1、使用wget下载单个文件以下的例子是从网络下

jQuery 源码分析学习 — 优秀前端框架jQuery框架认识

从今天开始学习优秀前端开源框架jQuery源码.本系列主要针对 jQuery1.6 源码分析学习.准备工作:初始jQuery 框架.(function(){ // javascript  代码…… })();所有的jQuery 代码都包含在这个自调用匿名函数中什么是匿名函数?类似这样的函数定义(function(a,b) { console.info( a+b); })( 5,6);匿名函数其实是一种函数字面量,就像对象字面量一样{name:”小小”,age:1}  第一对圆括号括起来的function(){….}  是匿名函数的函数体,第二对圆括号 (5,6) 是匿名函数的参数,此函数字面量

走火入魔javascript — 分享几个好多人执意往里跳的”坑”

javascript 是一门容易上手也是一门如意犯错的语言,为什么这么说,它零活的类型转化有时让你摸不到头脑.类型有没有定义都无所谓,一旦你的变量前少了var ,那可能会造成一个严重的bug ,污染了全局变量,甚至修改了全局变量的值,导致其他引用该变量的程序出错.函数形参和实参可以不匹配,不匹配到什么程度呢? 类型可以不匹配,甚至参数数量也可以不匹配……..等等javascript里的一些坑,如果你发现了一定要绕过去,如果你发现不了,那可能浪费你很多的时间去调试一个bug1.关于 NaN 类型,这是个非数值类型,那它的值是什么呢? 谁都不知道,的确,它自己都不知道.所以看下面的坑if(NaN=

走火入魔-javascript 中的类

嗯,没错,今天就是要讲下javascript中的类,哈哈,希望不要对大家有所误解!稍微对javascript有所了解的人应该知道,javascript这门弱类型语言没有类的概念,它是基于对象的.看了上面这句不仅有人低估起来了,既然有对象,为啥能没有类呢? 的确,javascript 是一门很怪异的弱类型语言,它的怪异之处以后慢慢讲,而它基于的对象并不是从类实例化过来的对象,而是原型对象.原型对象从哪来? 用一个不确切的比喻来说好比造物主创造世界的时候初始化了一些原生的东西,比如男人,女人,这是俩个活生生的原型而不是类型,也就是说javascript本身就内置了几种对象,而以后创建的对象都是从这

javascript中的对象

简单说下关于javascript中的对象.javascript 不是一门面向对象的语言,而是一门基于对象的语言,它的所有类型都基于Object原型而存在.但是我们常说 javascript中包括值类型 ,比如 boolean ,number, string 等值类型,其实这些值类型被称为 伪对象,他们对应javascript中三个内置对象分别是:Boolean , Number , String 而解析器将这三个对象的方法和属性同样绑定在对应字面量值类型上(boolean,number,string) 所以javascript中值类型也是也拥有了方法和属性,一般推荐直接使用这3个内置对象的字面

javascript私房菜-百变函数eval

如你所想,确实有点标题党手里有本鸟哥的<<linux私房菜>>对于一个linux菜鸟来说受益很大,所以我也来道私房菜,对鸟哥致敬!!eval 很神秘,你不觉得吗? 你可能常常会用到这个函数,但是有不太明天它到底是干什么的,其实我之前也一样非常糊涂,所以写了这篇博和大家一起学习探讨.很早一段时间我认为 eval 是个格式化函数,为什么这样认为,起因是ajax接收后台传过来的json格式字符串,javascript直接接收后台传入的json格式总是不识别,只要用神奇的 eval 函数转化一下就ok了,下面我们一起来认识一下 evalevalw3c 给出的定义是: eval(

jquery 判断某个元素在DOM中是否存在

javascript 代码下判断 DOM 下是否存在某个元素if(document.getElementByIdx_x(‘but’)){ alert(‘元素存在’); }else{ alert(‘元素不存在’); }但是在JQuery 下如判断某个元素是否存在.jquery 内置没有直接判断dom中某个元素是否存在的方法.$(“#but”) 获取到的是jquery 对象,是一个object,无法判断此元素是否存在.但是jquery 对象有个length 属性,表示当前jquery 对象中获取到几个 domElement 元素.所以我们的jquery代码可以这样写:if($(“#but”).le

走火入魔javascript — this关键字

this的指向是由它所在函数调用的上下文决定的,而不是由它所在函数定义的上下文决定的。(1)在全局范围内,this就是指全局对象.alert(this);this直接指向了当前环境的全局对象 window(2)调用函数时,this指向全局对象.例如 test();functiontest(){ alert(this); } test();因为调用test() 的环境就是全局,结合开开头第一句话,this 指向当前执行环境,而非定义环境,所以很容易理解当前this就是指向 window(3)函数的方法调用时,this指向调用方法的对象. 例如 obj.test(); 这时this 指 obj对

C#中常见的格式化字符串的方法

C# 中常用的格式化字符串方法.一.ToString() 显示固定长度,比如流水账号,数据库里保存数值为:1,2,3……189…19764这样显示在页面的ID就感觉对不齐,不美观,所有我们常常想左边用”0″来补齐.如下方法: ID.ToString().PadLeft(10,’0′); 不足10位的左面用”0″ 补齐00000000010000000002……00000001890000019764二. C# ToString() 里还有一种格式化可以将 ID.ToString(“D10″) ,功能也是将字符串格式化,不足10位前面补0三. Num.ToString(“C”) Num在数据库中

利用window.name 实现iframe 跨域传值

原理:浏览器跨域ifram禁止互相调用/传值.但是调用iframe时 window.name 却不变,正是利用这个特性来互相传值,当然跨域下是不容许读取ifram的window.name值.所以这里我们还要准备一个和主页面http://www.a.com/main.html 相同域下的代理页面http://www.a.com/other.html ,iframe调用子页面 http://www.b.com/iframe.aspx执行流程:浏览器执行主页面 http://www.a.com/main.html 时创建iframe 加载子页面 http://www.b.com/iframe.asp

走火入魔javascript – javascript中的垃圾回收机制

javascript的垃圾回收机制是运行环境自动收集机制.也就是说执行环境负责管理代码在执行过程中使用的内存.垃圾回收原理:找出内存中不再继续使用的变量,将其所占用的内存释放,开发人员不再关心内存的使用情况,内存的分配已经无用内存的释放完全实现了自动化管理.垃圾回收的方法有2种:(1)标记清除(2)引用计数标记清除:是目前javascript最常用的一种垃圾回收机制,当变量进入执行环境,将被标记为 “进入环境”当变量离开执行环境时,将被标记为 “离开环境”.垃圾收集器在运行时会给存储在内存中的所有变量都加上一个标记,然后检查哪些变量还在环境中使用,将去掉这些变量的标记,检查哪些变量被环境中的变

走火入魔javascript – 非值类型转化为整形方法

数值转化的3个函数(1) Number()(2) parseInt()(3) parseFloat()(1)可以用于任何类型转化为 数值型.(2),(3)专门用于字符串转化为 数值型.Number() 函数转化规则:Boolean 类型: true 转化为1, false 转化为0.数值型: 只是简单的传入和返回.Null类型: 转化为0.undefined: 转化为NaN.字符串:遵循如下规则(1)如果字符串只包含数字,直接转化为对应的数值.(2)如果字符串包含有效的浮点格式 如 “3.3″ 则直接转化为对应的浮点格式.(3)如果字符串中包含16进制格式字符串,如 “0xf” 则直接转化为对

javascript 基本类型有哪些?

Undefined:Undefined 类型只有一个值 undefined ,表示变量未定义此类型派生自Null 类型,所以出现一个很有趣的东西 if(null==undefined)alet(‘true’);将执行并弹出 true,因为条件是恒等的.当我们定义javascript变量的时候,其实默认就赋值为 undefined.var test; 其实等价于 var test=undefined;所以:当你要给一个对象定义变量时,最好这样, var testClass=null; 这样 testClass的默认值不少 undefined,保持的是一个空引用的null,下一步给testClas

采用P3P实现浏览器跨域 iframe读写 cookies

网站采用iframe框架形式嵌套了B网站的一个页面C,直接打开页面C会在本地保留一个cookie文件,而当采用A网站iframe框架形式嵌套后就无法成功生成cookie文件,该问题仅在IE浏览器环境下出现,firefox、chrome、Safari浏览器下没有问题。造成该问题的原因:一个所谓的隐私首选项(简称为P3P)的W3C标准。只有在每一页上设置一个cookie发送头,才能允许Internet Explorer接受第三方Cookie。换言之,只有在页面C上设置一个cookie发送头,那么A网站iframe框架形式嵌套后就可以在IE下成功获得页面C的cookie。PHP:header(‘P3

express bodyParser post上传文件request.body 不能获取表单值

问题如上描述:express bodyParser post上传文件request.body 不能获取表单值可以上传保存文件到指定目录,但是form 里其他表单项却无法用 request.body['表单name'] 来获取表单值.express 配置如下:app.use(express.bodyParser({ uploadDir:__dirname+‘/upload/’, keepExtensions:true, limit:10000000, defer:true })); app.use(express.multipart()); app.use(express.me

javascript 基础训练 Array数组

Array 是javascript语言中的一种引用类型,表示js里的数组.Array 对象的创建大致有4种方法.(1) var arr=new Array(); 上面使用构造函数创建了一个新的数组对象 arr,此数组为空数组,里面没有任何元素.(2)var arr=new Array(num);上面的num为整数,表示创建一个包含num个元素的空数组.(3)var arr=new Array(11,’xiaoxiao’,function(){alert(’3′)})上面调用构造函数时填充了3个参数,其实可以更多,表示创建一个数组并依次把参数当做新数组的元素填充到数组中.可见js的数组中元素可以

my97显示双日历

大名鼎鼎的my97 日期选择控件,做开发的攻城狮应该或多或少都了解.今天正好有个需求是现实双月份,而且截至日期要大于开始日期等需求,第一时间想到了my97控件.首先把最后的效果图放上来一睹为快!我的页面首先有2个文本框,一个开始日期,一个结束日期<inputtype=“text”id=“startTime”placeholder=“起始日期”/>- <inputtype=“text”id=“endTime”placeholder=“结束日期”/>首先去 my97 官网下载控件,引用的时候最需要引用一个主文件即可,其他样式,图片等都不需考虑,脚本内部做了引用.<sc

javascript 基础训练 Function 函数对象

正如标题所写,Function 确实是一个对象.而我们定义的任何一个函数其实都是Function 对象的一个实例,也可以理解为指向 Function 对象的一个实例.既然是对象的一个实例,那肯定指向了Function 类型的一个引用. 既然指向了一个引用类型的内存地址,那你也可以简单的把我们定义的函数理解为一个变量,这个变量指向了一个引用类型的地址,这个地址指向了Function 对象的一个实例.既然我们定义的函数其实是一个变量,那这个函数实例地址可以同时指向多个变量.看下面的代码:var add = new Function("n", "m", &qu

javascript 下将万恶的毫秒变成友好可识别的 时,分,秒

javascript 环境里的时间戳随处可见,这个值表示的是从 1970年1月1日午夜0点开始计数到现在的一个毫秒数.获取JavaScript中的时间戳有几种方法:vartimestamp=Date.parse(newDate());此方法精确到了秒,毫秒位数上全部都是0vartimestamp=(newDate()).valueOf();此方法精确到了毫秒位.如果考虑到浏览器兼容性的问题,上面的方法可以兼容市面上大多的浏览器,推荐使用.vartimestamp=newDate().getTime();此方法和上面得到的值一样.vartimestamp=Date.now();如果是在V8环境下

node.js 下 express 框架如何获取参数

web下的提交数据的方法有2种,GET,POST,不明白的可以直接去面壁了.到底采用哪种方式提交,取决与form 的 method 值.作为node.js下大名鼎鼎的express框架,如何获取这2中参数呢(1) 先看路由规则app.get(‘/group/:groupID’,function(request,response,error){response.render(‘group’,{title:‘分组管理’,userList:[]};});上面的路由规则让我们不仅想起了MVC模式, 如: localhost:9210/group/1008这里要访问groupID 为 1008 的分组信

经典算法题随机从连续的100个不重复数中取出100个不重复随机数

经典的面试题: 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复网上实现的方法也千奇百怪.实现思路:(1)把N个数放入Hashtable 或者arrayList 中.(2)从上面的集合中随机抽取一个数放入int数组中.(3)把取出的这个数从上面的集合中删除.(4)循环 (2),(3) 步骤,直到int数组取满为止.我们一般都会想到这种做法,但是当Hashtable或者ArrayList中放几千万,几亿数据时,这时从集合中删除元素将严重影响性能,如果突破此瓶颈? 网上找到一种更好的方法.(1)把N个数放到容器A(int数组)中.(2)从N个数中随机取出1个数放入容器B(

Mac 常用快捷键整理

MAC下常用的快捷键:Command+W 将当前窗口关闭(可以关闭Safari标签栏,很实用)Command+Option+M 将所有窗口最小化Command+Q 关闭当前应用程序(相当于Dock鼠标右键推出.很实用)Command+M 将目前使用的窗口最小化Command+H 隐藏当前窗口或者软件Command+tab 为切换当前工作任务Control+Command+S 切换控制条的显示和隐藏Command+i 常规信息(显示及设置图标属性)Command+delete 移到废纸篓(删除)Optionion+鼠标 拖图像或文件夹可以将图像或文件夹拷贝到其它文件夹中,而不是移动Command

浅谈 javascript 中的比较操作符 ==

我们知道javascript中的比较操作符有2种,== 和 ===== 是只比较值, === 不仅比较值还比较类型 ,详细的区别自动google去.这里简单说下判断比较操作符 ==== 此操作符比较常用,但是隐藏的”坑”也不少,你在开发过程中有没有跳到 == 操作符设下的”坑”呢?由于javascript中的类型转化非常灵活,我们知道除了null,undefined,false,0,”空字符串 转化为布尔型 false 外,其他都是 true,其中有一个例外,NaN 是个非数字类型,NaN!=NaN 成立.这个非常特殊.javascript中比较操作符规则:(1)当基本类型比较时,两边会转化成

Git 简易使用笔记

git add . 会把当前目录中所有有改动的文件(不包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交git add * 会把当前目录中所有有改动的文件(包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交所以在有要忽略的文件(如:配置文件之类的)有做修改的时候git add .可以正常工作,会把所有非忽略的所有有改动的文件添加到缓冲区git add *则会报错,且此几命令不会添加任何文件到缓冲区本地代码添加修改首先(1) git add . 从本地代码文件夹添加到索引目录.(2) git commit -m”提交描述信息” 从代码索引目录提交到HEAD目录

比较俩个对象或者json格式数据是否相同

javascript 中的对象比较并不是值的比较.所以类似object 和json类型格式比较时要考虑是否包含相同的属性并具有相同的属性值.贴一个用于对象比较的函数.只需传入两个对象即可返回 true 或者 falsefunctioncompareObject(o1,o2){ if(typeofo1!=typeofo2)returnfalse; if(typeofo1=='object'){ for(varoino1){ if(typeofo2[o]=='undefined')returnfalse; if(!compareObject(o1[o],o2[o])

javascript Date类型扩展日期格式化方法 DateFormat

Date.prototype.Format=function(fmt){//author:meizz varo={ “M+”:this.getMonth()+1,//月份 “d+”:this.getDate(),//日 “h+”:this.getHours(),//小时 “m+”:this.getMinutes(),//分 “s+”:this.getSeconds(),//秒 “q+”:Math.floor((this.getMonth()+3)/3),//季度 “S”:this.getMilliseconds()//毫秒 }; if(/(y+)/.test(fmt))fmt=fmt.repl

linux 系统为啥喜欢用~代表Home目录

Linux知识:为什么要用字符~来表示home目录在Unix风格的操作系统里(包括BSD,GNU/Linux和MacOSX),通常用波浪号“~”来表示当前用户的主目录(home目录):例如,如果当前用户的home目录是/home/bloggsj,那么,输入cd或cd~或cd/home/bloggsj或cd$HOME都是等效的。这种习惯源自于1970年代流行的Lear-SieglerADM-3A终端机,这种机器上波浪号和“home”键(用于把光标移动到最左端)正好在同一个键上。下面是Lear-SieglerADM-3A终端机的一些照片:LearSiegler-ADM3ATerminal(ca.1

回到顶部