随笔分类 -  Javascript

摘要:引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。注意:从传统意义上来说,ECMAScript 并不真正具有类。事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词。ECMAScript 定义了“对象定义”,逻辑上等价于其他程序设计语言中的类Object对象是由 new 运算符加上要实例化的对象的名字创建的。例如,下面的代码创建 Object 对象的实例: var obj = new Object();这种语法与 Java 语言的相似,不过当有不止一个参数时,ECMAScript 要求使用括号。如果没有参数,如以下代码所示,括号可以省略: ... 阅读全文
posted @ 2013-12-01 21:14 水之原 阅读(478) 评论(1) 推荐(0) 编辑
摘要:原始值和引用值在ECMAScript中,变量可以存放两种类型的值,即原始值和引用值。原始值(primitive value)是存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值(reference value)是存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型的,还是引用类型的。要实现这一点,解释程序则需尝试判断该值是否为ECMAScript的原始类型之一,即Undefined、Null、Boolean和String型。由于这些原始类型 阅读全文
posted @ 2013-12-01 21:06 水之原 阅读(621) 评论(1) 推荐(0) 编辑
摘要:ECMAScript的基础概念熟悉Java、C和Perl这些语言的开发者会发现ECMAScript的语法很容易掌握,因为它借用了这些语言的语法。Java和ECMAScript有一些关键语法特性相同,也有一些完全不同。ECMAScript的基础概念如下:区分大小写。与Java一样,变量、函数名、运算符以及其他一切东西都是区分大小写的,也就是说,变量test不同于变量Test。变量是弱类型的。与Java和C不同,ECMAScript中的变量无特定的类型,定义变量时只用var运算符,可以将它初始化为任意的值。这样可以随时改变变量所存数据的类型(尽管应该避免这样做,但作为Web开发,这确实可以提高效率 阅读全文
posted @ 2013-12-01 14:06 水之原 阅读(6550) 评论(1) 推荐(0) 编辑
摘要:Script标签script标签用于在HTML页面中嵌入一些可执的脚本 script标签有三个特殊的属性(当然,像id,class这样的属性它也是有的,HTML页面中几乎每个元素都可以有class,id属性) //对于JScript只有IE能够识别,其它浏览器会忽略这个标签其里面的内容 //而对于VBScript,只有Windows上的IE能够识别,运行 //然而language属性后来在XHTML中被type属性替代了 在Web浏览器中,我们只会使用JavaScript,type属性设置为text/javascript.事实上,由于JavaScript十... 阅读全文
posted @ 2013-12-01 13:53 水之原 阅读(2469) 评论(0) 推荐(0) 编辑
摘要:数组数组,实际上就是将一大堆相似的数据有秩序的放在格子箱中,十分像药房里的那些柜子.数据1数据2数据3数据4数据5数据6用代码创建数组 var arr = new Array();//Array和Date一样,也是一个内置对象,需要使用new运算符创建 arr[0]="数据1";//向数组中添加一个元素,数组中的元素是有编号的,并且要注意的是,编号从0开始 //上面一行代码就向数组中的第一个箱添加了一个元素 arr[1]="数据2";//方括号用以指定下标1 arr[2]="数据3"; arr[3]="数据4"; 阅读全文
posted @ 2013-12-01 13:43 水之原 阅读(1603) 评论(0) 推荐(0) 编辑
摘要:函数函数(又称为方法)用于对一大段为了达到某种目的的代码进行归类,以使代码更具有条理: //一段计算三角形面积的代码 var wide=window.prompt("请输入三角形的底边长度!",""); var high=window.prompt("请输入三角形的高!",""); var area=wide*high/2; if (isNaN(area)) {//判断用户是否输入的是数字 alert("三角形的面积为"+area); } else { alert("您的输入有误!&q 阅读全文
posted @ 2013-12-01 12:23 水之原 阅读(684) 评论(0) 推荐(1) 编辑
摘要:分支结构单一选择结构(if)二路选择结构(if/else)内联三元运算符 ?:多路选择结构(switch) var condition = true; if (condition) { alert("我将出现!"); } condition = false; if (condition) { alert("我不会出现!"); } else { alert("我会出现!"); } condition ="some string"; if (condition) { alert("可以直接... 阅读全文
posted @ 2013-12-01 12:10 水之原 阅读(1419) 评论(0) 推荐(0) 编辑
摘要:变量对于变量的理解:变量是数据的代号。如同人的名字一样。 var num;//在JavaScript中使用关键字var声明一个变量在JavaScript中,使用上面的语法,就可以声明一个变量,以便在之后给其指定值. var num; num=128;//这样,就将num做为值128的一个名字,有了名字,就可以在之后引用! document.write(num);//输出128貌似下面的代码和上面的具有一样的输出 document.write(128);//这样当然也输出了128不过再试试下面的代码 document.write(3.1415926535897... 阅读全文
posted @ 2013-12-01 12:03 水之原 阅读(1026) 评论(1) 推荐(0) 编辑
摘要:JavaScript历史大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌入式脚本语言。 Cmm背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与C(和C++)中够的相似性,以便开发人员能很快学会。 这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,它首次向开发人员展示了这种语言的威力。 Nombas最终把Cmm的名字改成了ScripEase。原因是后面的部分(mm)听起来过于“消极”,同时字母C“令人害怕”。 现在ScriptEase已经成为了Nombas产品背后的主要驱动力。 当Netscape 阅读全文
posted @ 2013-12-01 11:56 水之原 阅读(2763) 评论(0) 推荐(2) 编辑
摘要://达夫正向循环 function duffForwardLoop(items, process){ var idx = 0; var len = items.length; var itr = len >> 3; while (itr--) { process(items[idx++]); process(items[idx++]); process(items[idx++]); ... 阅读全文
posted @ 2013-11-05 15:43 水之原 阅读(506) 评论(0) 推荐(0) 编辑
摘要:function DrawImage(ImgD, FitWidth, FitHeight) { var image = new Image(); image.src = ImgD.src; if (image.width > 0 && image.height > 0) { if (image.width / image.height >= FitWidth / FitHeight) { if (image.width > FitWidth) { ImgD.width = FitWidth; ... 阅读全文
posted @ 2013-09-03 15:14 水之原 阅读(582) 评论(2) 推荐(0) 编辑
摘要:别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明白了很多,却又几乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的人在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理,以后你还需要多练习,多使用,才能熟练掌握正则表达式。除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说,这个目标还是完成得不错的——你看,我自己也没能把所有的东西记下来,不是吗?清除格式文本格式约定:专业术语元字符/语法格式正则表达式正 阅读全文
posted @ 2013-08-14 00:19 水之原 阅读(1772) 评论(1) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-08-13 23:38 水之原 阅读(474) 评论(0) 推荐(1) 编辑
摘要:(function(){ var document = window.document; var scrollTop = document.body.scrollTop; var addHandler = document.body.addEventListener ? w3cAddEvent : ieAddEvent; var removeHandler = document.body.removeEventListener ? w3cRemoveEvent : ieRemoveEvent; var daysArray = ["SUNDAY", ... 阅读全文
posted @ 2013-08-05 16:54 水之原 阅读(309) 评论(0) 推荐(0) 编辑
摘要:1.新建一个html页面,如下 Collection Test ArrayList And Map Test 在页面中引入qunit.js和qunit.css, 可以去官网下载:http://qunitjs.com/引入你要测试的js// 封装ArrayList类,用法与java类似。(function(win){ var ArrayList... 阅读全文
posted @ 2013-08-02 15:15 水之原 阅读(2255) 评论(2) 推荐(1) 编辑
摘要:函数式编程风格通常来讲,函数式编程的谓词(关系运算符,如大于,小于,等于的判断等),以及运算(如加减乘数等)都会以函数的形式出现,比如: a > b通常表示为: gt(a, b)//great than因此,可以首先对这些常见的操作进行一些包装,以便于我们的代码更具有“函数式”风格:function abs(x){ return x>0?x:-x;}function add(a, b){ return a+b; }function sub(a, b){ return a-b; }function mul(a, b){ return a*b; }function div(a, b){ 阅读全文
posted @ 2013-06-27 22:59 水之原 阅读(1967) 评论(0) 推荐(0) 编辑
摘要:递归是拖慢脚本运行速度的大敌之一,太多的递归会让浏览器变得越来越慢直到死掉或者莫名其妙的突然自动退出。这里我们可以通过memoization技术来替代函数中太多的递归调用,提升JavaScript效率。递归是拖慢脚本运行速度的大敌之一。太多的递归会让浏览器变得越来越慢直到死掉或者莫名其妙的突然自动退出,所以我们一定要解决在JavaScript中出现的这一系列性能问题。我们可以通过memoization技术来替代函数中太多的递归调用。memoization是一种可以缓存之前运算结果的技术,这样我们就不需要重新计算那些已经计算过的结果。对于通过递归来进行计算的函数,memoization简直是太有 阅读全文
posted @ 2013-06-27 22:27 水之原 阅读(740) 评论(0) 推荐(1) 编辑
摘要:位运算符是在数字底层(即表示数字的 32 个数位)进行操作的。重温整数ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。在 ECMAScript 中,所有整数字面量默认都是有符号整数,这意味着什么呢?有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。数值范围从 -2147483648 到 2147483647。可以以两种不同的方式存储二进制形式的有符号整数,一种用于存储正数,一种用于存储负数。正数是以真二进制形式存储的,前 31 位中的每一位都表示 2 的幂,从第 1 位(位 0)开始,表示 20 阅读全文
posted @ 2013-05-19 10:26 水之原 阅读(261) 评论(0) 推荐(0) 编辑
摘要:// Copyright 2009-2012 by contributors, MIT License// vim: ts=4 sts=4 sw=4 expandtab // Module systems magic dance(function (definition) { // RequireJS if (typeof define == "function") { define(definition); // YUI3 } else if (typeof YUI == "function") { YUI.add("es5-sham&quo 阅读全文
posted @ 2013-01-14 21:41 水之原 阅读(4253) 评论(0) 推荐(0) 编辑
摘要:整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。只 阅读全文
posted @ 2012-12-18 21:17 水之原 阅读(220410) 评论(13) 推荐(16) 编辑