随笔分类 -  javascript

javascript学习;基础;面向对象;
摘要:在多年开发邮箱webmail过程中,网易邮箱前端团队积累了不少心得体会,我们开发了很多基础js库,实现了大量前端效果组件,开发了成熟的opoa框架以及api组件,在此向大家做一些分享。今天想先和大家聊聊javascript的编码规范。总所周知,javascript是一种语法极其灵活的语言。javascript在设计之初就只是用来为HTML添加动态效果的。由于他动态,弱类型等特性,以及不同浏览器的兼容性问题,造成了开发成本要比java等语言要高很多。正因为它太灵活,我们制定了适用于网易邮箱的javascript编码规范,尽可能多的降低由于语法灵活造成的问题。以下将具体介绍:1. 变量命名规范变量 阅读全文
posted @ 2014-03-26 18:01 simpman 阅读(1236) 评论(1) 推荐(9)
摘要:有三种类型的样式表:内嵌样式(inline Style) :是写在Tag里面的,内嵌样式只对所有的Tag有效。内部样式(internal Style Sheet):是写在HTML的里面的,内部样式只对所在的网页有效。外部样式表(External Style Sheet):如果很多网页需要用到同样的样式(Styles),将样式(Styles)写在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文件。最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX 阅读全文
posted @ 2014-03-26 10:32 simpman 阅读(227) 评论(0) 推荐(0)
摘要:一、显示信息的命令 console.info("这是info"); console.debug("这是debug"); console.warn("这是warn"); console.error("这是error"); console.log("log");二、占位符 console对象的上面5种方法,都可以使用printf风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)四种。三、分组显示 console.group("第一组 阅读全文
posted @ 2014-03-17 15:41 simpman 阅读(409) 评论(0) 推荐(0)
摘要:这周ECMAScript 5也即众所周知的JavaScript正式发布了(pdf),在给基本库带来更新的同时,还引入了更加严格的运行时模型,来帮助定位并移除通常的代码错误。而早期对于ECMAScript 4的标准化工作基本就算是失败了;只有Adobe的ActionScript是基于建议的变化的。ECMA甚至都没有发布一个版本4的规范,因为不同的组织对于发展的进度并不满意;就这样,也没有浏览器来支持它了。在过去的几年,随着JavaScript引擎的大力改善,比如Nitro和TraceMonkey,JavaScript已经极具性能,以Google Wave为代表的在线协作应用可以证明这一点。甚至还 阅读全文
posted @ 2014-03-12 16:29 simpman 阅读(434) 评论(0) 推荐(0)
摘要:var a = "avalue";var b = "bvalue";var t = a&&b;console.info(t); // bvaluevar a = "";var b = 1;var t = a&&b;console.info(t); // ""总结:其他语言的结果为boolean值,js却不是这样,而是相当于if(a){b}else{a}而var t=a||b;相当于if(a){a}else{b} 阅读全文
posted @ 2013-11-06 11:40 simpman 阅读(380) 评论(0) 推荐(1)
摘要:#1使用双等号给布尔变量赋值,很容易联想到 var a = b || 123; 的写法var a = b == 123;#2快速转换为布尔值!!a#3防止页面被 iframe 调用if(top !== window) { top.location.href = window.location.href;}#4将 arguments 参数组转换为真实数组function args() { return [].slice.call(arguments, 0);}args(2, 5, 0); //[2, 5, 0]#5查找数组中的最大值var arr = [2, 3, 45, ... 阅读全文
posted @ 2013-10-30 11:56 simpman 阅读(253) 评论(0) 推荐(0)
摘要:今天来介绍一下javascript不一样的写法,很简单哦。1、当条件成立时执行a方法,当条件失败是执行b方法通常我们会这样写:var result;if(isOk){ result=funA();}else{ result=funB();}还可以这样表达: var result=isOk? funA():funB()2、当条件成立执某个方法通常方式: if(isOk){ doSomething(); }我更喜欢这样写:isOk&&doSomething();如果一个变量没定义或没有值则给它一默认值str=str||"ok";arr=arr||[];上面的方式 阅读全文
posted @ 2013-06-09 09:10 simpman 阅读(221) 评论(0) 推荐(0)
摘要:通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。 例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。 又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中 阅读全文
posted @ 2013-06-08 17:30 simpman 阅读(265) 评论(1) 推荐(0)
摘要:原文:http://www.cnblogs.com/yexiaochai/archive/2013/05/26/3100387.html#由于在下载一些东西,收藏不成功,就把原文转过来了。前言因为公司要进行前端团队建设,这一培训任务就落到了我手里,有时候会望着后端几个工作5年甚至10年的同事,心里还是有点虚的,虚完事情还是要做的,所以首先需要先复习复习,后面再根据最近的博客形成PPT吧,所以“本老师”来了。。。这次培训的内容由CSS、javascript、jquery组成,按道理说该先写CSS的,但是我CSS很水已经是默认的标准了,所以还是先看看js吧,希望我js不这样水javascript基 阅读全文
posted @ 2013-05-27 04:57 simpman 阅读(191) 评论(0) 推荐(0)
摘要:原文:http://www.2ality.com/2012/01/typeof-use-cases.htmlJavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法.阅读本文的前提是,你现在应该已经知道原始值和对象值的区别了.1.检查一个变量是否存在,是否有值.typeof在两种情况下会返回"undefined":一个变量没有被声明的时候,和一个变量的值是undefined的时候.例如:> typeof undeclaredVariable === "und 阅读全文
posted @ 2013-05-09 14:15 simpman 阅读(189) 评论(0) 推荐(0)
摘要:数组json访问变量的方法字符串 转化闭包 阅读全文
posted @ 2013-05-02 17:05 simpman 阅读(95) 评论(0) 推荐(0)
摘要:第七章闭包闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识。如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感。在DOM的事件处理方面,大多数程序员甚至自己已经在使用闭包了而不自知,在这种情况下,对于浏览器中内嵌的JavaScript引擎的bug可能造成内存泄漏这一问题姑且不论,就是程序员自己调试也常常会一头雾水。用简单的语句来描述JavaScript中的闭包的概念:由于JavaScript中,函数是对象,对象是属性的集合,而属性的值又可以是对象,则 阅读全文
posted @ 2013-05-02 14:08 simpman 阅读(134) 评论(0) 推荐(0)
摘要:<script type="text/javascript" src="json2.js"></script><script>//直接声明json数据结构var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEve 阅读全文
posted @ 2013-05-02 14:04 simpman 阅读(401) 评论(0) 推荐(0)
摘要:一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。Js代码 var n=999; function f1(){ alert(n); } f1();// 999另一方面,在函数外部自然无法读取函数内的局部变量。Js代码 function f1(){ var n=999; } alert(n);// error这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!Js代码... 阅读全文
posted @ 2013-05-02 13:58 simpman 阅读(123) 评论(0) 推荐(0)
摘要:<script type="text/javascript" src="json2.js"></script> <script> //直接声明json数据结构 var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"irc 阅读全文
posted @ 2013-05-02 11:33 simpman 阅读(315) 评论(0) 推荐(0)
摘要:每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可以实现继承,加上js的对象只是引用不会是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同。当我们使用选择器的时候$(selector,content),就会执行init(selectot,content),我们看看inti中是怎样执行的: 1 if ( typeof selec 阅读全文
posted @ 2013-04-28 18:08 simpman 阅读(347) 评论(0) 推荐(0)
摘要:js中json的标准格式:var test = {"a":"avalue","b":"bvalue"};另一种格式:var test={a:"avalue",b:"bvalue"};浏览器端两种格式都能接受。但是服务器端接受json必须为标准格式。而对于var test = {"a":"avalue","b":"bvalue",}chorme,firfox可以接受,ie系列则会当做错误处理。建议: 阅读全文
posted @ 2013-04-26 15:38 simpman 阅读(143) 评论(0) 推荐(0)
摘要:一、为什么要进行Javascript压缩?1、减少JS代码容量,增加下载速度和执行速度;2、压缩后的JS代码不具备可识性,在一定程度上达到加密效果,防止被人轻易使用。二、常规Javascript压缩的原理:1、压缩多余的空格和换行符;2、删除注释,因为注释对浏览用户是无用的,删除了可以缩小文件体积;3、把较长的变量名称和过程名称统一替换为很短的名称。三、其他Javascript压缩(加密)原理http://www.cnblogs.com/heimirror/archive/2010/06/04/1751304.html1、加密:微软有一个控件,可以将javascript加密,加密后真的是一点都 阅读全文
posted @ 2013-03-15 18:01 simpman 阅读(1087) 评论(0) 推荐(1)
摘要:先用一个简单的例子说明:var o={flag:true};var test=!!o.flag;//等效于var test=o.flag||false;alert(test);由于对null与undefined用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值;如果没有设置,test就会默认为false,而不是null或undefined。在jQuery中比较经典的例子如下:(jQuery 1.7.0.js: Line 748) grep: 阅读全文
posted @ 2013-03-07 12:32 simpman 阅读(186) 评论(0) 推荐(0)
摘要:Javascript闭包的定义非常晦涩——闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(深连结)。简单来说,Javascript闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),而这些键值对是不会随上一级函数的执行完成而销毁。周爱民说得更清楚,闭包就是“属性表”,闭包就是一个数据块,闭包就是一个存放着“Name=Value”的对照表。就这么简单。但是,必须强调,闭包是运行期概念,一个函数实例。Javascript闭包的实现 阅读全文
posted @ 2013-03-06 14:00 simpman 阅读(180) 评论(0) 推荐(0)