JavaScript学习记录(一)
来源:互联网 发布:淘宝西地那非原粉暗语 编辑:程序博客网 时间:2024/06/11 15:55
下决心要学习JavaScript了,用博客来记录一下。会不断更新的。(参考资料:《精通JavaScript+JQuery》曾顺编著,《精通JavaScript动态网页编程》王俊杰编著)
简介:
先说一下我理解的JavaScript是干嘛用的,我们在写网页的时候,最开始用的是HTML,从HTML入手简单易懂,但是缺陷是HTML只是静态网页,要把其变成动态网页,就要用到JavaScript,这中间要用到JavaScript解释器,具体作用情况如下图:
其中DHTML(Dynamic HTML)包含如下3个含义:
- 通过HTML把网页标记为各个元素;
- 利用CSS设计元素之间的排版样式,并控制各个标记的位置;
- 使用JavaScript来控制各个标记。
JavaScript的组成部分如下图:
ECMAScript是一个重要标准,DOM是W3C制定的规范,BOM是浏览器对象模型。
基础:
ECMAScript的基础概念如下:
- 区分大小写;
- 弱类型变量。定义变量只使用“var”关键字(所有类型,并可灵活变换);
- 每行分号可有可无(但还是都写着吧,规范);
- 括号用于代码块。代码块表示一系列按顺序执行的代码,这些代码封装在“{”和“}”中;
- 注释的方式与C语言和Java相同。
这里再重申一下变量名称的规则:
- 首字符必须是字母(大小写均可),下划线(_)或者美元符号($);
- 余下的字母可以是下划线,美元符号,任意字母或者数字字符;
- 变量名不能是关键字或者保留字。
为了代码清晰易懂,利用命名规则进行前缀标记,下图为匈牙利标记法
JavaScript一共有9种数据类型,分别是未定义(Undefined),空(Null),布尔型(Boolean),字符串(String),数值(Number),对象(Object),引用(Reference),列表(List)和完成(Completion)。其中后三种类型仅仅作为JavaScript运行时中间结果的数据类型,不能在代码中使用。
其中选几个要点来说一下:
数值型:
- 十进制数.(十进制数)(指数),例126.5;
- 十六进制数,以数字0开始,后面紧跟字母x(不区分大小写),其后是十六进制数,例0x23456ABC;
- 八进制数,以数字0开头,后面紧跟一个八进制数,例021376
- 特殊值 Infinity。当一个数值表达式的值超出了可表示的最大(最小)值得范围,将被赋值为(-)Infinity,所有(-)Infinity值都相等,且运算结果仍为Infinity,
- 特殊值 NaN,含义是 “not a number”。当一个undefined表达式结果为数值型数据时,该数值型数据就是NaN值。
无定义数据类型(undefined):用来表示不存在的值或尚未赋值的变量。
空值(null):是一个表示“什么都没有”的占位符。
函数:
定义函数 function:
function 函数名([参数列表]){statements(程序语句)......[return 值;]}注意:
- 函数名必须唯一,且区分大小写;
- 参数可以是常量,变量或表达式;
- 参数列表中有多个参数时,参数间以逗号“,”隔开;
- 若函数需要返回值,使用return语句;
- 定义函数并不会执行组成函数的语句,只有当调用函数时,函数才会执行;
- 如果函数中省略了return语句后面的表达式,或者函数结束时根本没有return语句,函数就会返回一个undefinded的值。
arguments 数组对象,包含了调用程序传递给函数的所有函数。如果要实现的参数个数允许不确定,或者函数的参数个数很多,又不想为每个参数都定义一个变量,在定义这样的函数时,可以保留函数的参数列表为空,在函数内部使用arguments对象来访问调用程序传递的所有参数。例子如下:
<Script language="javascript"><!-- function testparams() { var params=""; for(var i=0;i<arguments.length;i++) params=params+""+arguments[i]; alert(params); } //函数调用与结果输出 testparams("abc",123); testparams(123,456,"abc");//--></script>
动态函数:
定义指针变量来指向某个函数,以后就用这个指针变量来调用其指向的函数,语法格式:
var 变量名= new Function(参数列表);例子如下:
<Script language="javascript"><!--//等号的右边是一个动态创建的函数,注意其变量、语句及返回值的写法var square=new Function("x","y","var sum;sum=x*x+y*y;return sum;"); alert(square(3,2)); //调用该动态函数并显示其结果//--></script>注意:这里的x,y一定要用双引号或单引号引起来,动态函数的执行代码作为 new Function(...)最后的参数内容出现。
JavaScript的系统函数:
URL编码处理函数
- encodeURI 方法:返回一个对URI字符串编码后的结果。
- decodeURI 方法:与encodeURI相反,decodeURI方法将一已编码的URI字符串解码成最原始的字符串并返回。
数值处理函数
- parseInt 方法:将一个字符串指定的进制转换成一个整数,语法格式:parseInt(numString,[radix])。
- parseFloat 方法:将一个字符串转换成对应的小数。
- isNaN 方法:用于检测 parseInt 和 parseFloat 方法的返回值是否为NaN。
字符串编码处理函数
- escape 方法:返回对一个字符串编码后的结果字符串。所有空格,标点,重音符号以及任何其他非ASCLL码字符都用%xx编码替换(xx等于十六进制Unicode编码)。
- unescape 方法:将一个用escape方法编码的结果字符串编码成原始字符串并返回。
- eval 方法:将某个参数字符串作为一个JavaScript表达式执行。
对象:
对象是一种非常重要的数据类型,是自我包含的数据集合。对象包含属性(property)和方法(method)。
对象使用运算符 new 来创建,在 new 之后必须有用于初始化对象的构造函数名。
两种创建对象的方法:
1.用构造函数创建对象function Student(name,age,grade){this.name=name;this.age=age;this.grade=grade;}
2.直接创建对象<script language="javascript"><!-- var book = new Object();//创建一个对象,并保存在一个变量中 book.title = "Book1";//设置该对象的一个属性 //设置更多的属性,注意其层次关系 book.chapter1 = new Object(); book.chapter1.title ="第一章"; book.chapter1.pages = 25; book.chapter2 = {title:"第二章",pages:30}; //调用该对象的某些属性 alert("输出结果:"+"\n\t\n\t"+book.title+"\n\t"+"Chapter 1: " +book.chapter1.title+"\n\t"+"chapter 2: "+ book.chapter2.title);//--></script>可以使用 delete 语句来删除一个对象的属性,如:delete book.chapter2; 删除该对象。
方法是通过对象调用的JavaScript函数。可以将函数赋给任何变量,甚至赋给一个对象的任何属性。在方法的主体内部,关键字this的值会变成调用该方法的对象。
JavaScript面向对象,因此也可继承,也有实例方法,类变量,类方法这些概念。
一个对象可以创建多个对象实例,在使用时,各个对象实例之间没有任何关系,为一个对象实例新增加的属性和方法,不会增加到同一个对象所产生的其他对象实例上,修改一个对象 的实例的属性值,也不会影响其他对象实例的同名属性。this 关键字一般只在用作对象成员方法的函数中出现,代表某个成员方法执行时,引用该方法的当前对象实例。在对象的构造函数中使用 “this.成员名”的形式,可以为该对象的每个对象实例都增加新成员。
数组:
用构造函数Array()和运算符new来创建,三种调用方法:
var a=new Array();var a=new Array(5,4,3,2,1,"test,test");var a=new Array(10);
数组都有length属性。Array对象的常用方法:
- join 方法:将一个数组的所有元素转换成字符串,并把这些字符串连接起来。
- reverse 方法:在已有的数组中对数组元素进行重排,用来颠倒数组元素的顺序。
- sort 方法:用来对数组元素进行排序。
- Alice 方法:返回的是指定数组的一个子数组。带有两个参数,分别表示要返回的子数组的起止点(负数表示从最后一个元素倒数)。
- splice 方法:可以把元素从数组中删除,也可以向数组中插入新元素。
作为关联数组的对象,区别 “.” 和 “[]”:
- 当采用 “.” 运算符存取对象属性时,属性名是用标识符表示的,而标识符必须被逐字输入。标识符不是一种数据类型,程序不能对其进行操作;
- 当用 “[]” 存取对象属性时,属性名是用字符串表示的,而字符串是JavaScript的一种数据类型,可以在程序运行过程中常见并进行操作。
JavaScript内部对象:
Object对象,String对象,Date对象,Math对象,number对象。。。
专门用于对象的语句
with语句:
语法格式:with(对象名称){ 程序语句块 }
<script language="javascript"><!-- var curr_time = new Date(); with(curr_time) { //定义变量,并为其赋值为当前年份,后加中文“年”字标识 var strDate = getYear()+1900+"年"; //取当前月份。注意月份从0开始,所以需加1,后加中文“月”字标识 strDate +=getMonth()+1+"月"; strDate +=getDate()+"日"; //取当前日期,后加中文“日”字标识 strDate +=getHours()+":"; //取当前小时 strDate +=getMinutes()+":"; //取当前分钟 strDate +=getSeconds(); //取当前秒数 alert(strDate); //结果输出 }//--></script>for...in 语句:
语法结构:for (变量in对象){ 程序语句 }
<script language="javascript"><!-- function Student() { this.name = "张华"; this.age = "19"; this.height = "172"; } var attr = new Student(); var prop,stru =""; for(prop in attr) { stru += prop+" "; } alert(stru);//--></script>加以改造,使用 “对象实例名[属性名]” 的形式取出每个属性值:
<script language="javascript"><!-- function Student() { this.name = "张华"; this.age = "19"; this.height = "172"; } var attr = new Student(); var prop,stru =""; for(prop in attr) { stru += attr[prop]+" "; } alert(stru);//--></script>
- JavaScript学习记录(一)
- JavaScript学习记录(一)
- JavaScript点滴记录(一)
- 学习记录(一)
- 学习记录(一)
- 学习记录(一)
- JavaScript学习记录(二)
- JavaScript学习记录(1)
- JavaScript学习记录(2)
- JavaScript学习记录(3)
- JavaScript学习记录(4)
- JavaScript学习(一)
- JavaScript学习(一)
- 学习JavaScript(一)
- JavaScript学习(一)
- JavaScript学习(一)
- JavaScript学习(一)
- javaScript学习(一)
- 专业的房产平台
- UILable标签的设置
- PowerDesigner物理模型用法总结
- leetcode 24 -- Swap Nodes in Pairs
- Apache安全配置
- JavaScript学习记录(一)
- mapreduce编程异常记录
- Makefile include
- Java系列之XML
- CocoaAsyncSocket使用笔记之GCDAsyncUdpSocket
- Mina框架数据发送流程
- live555学习笔记2-基础类
- 如何在CentOS/RHEL中安装基于Web的监控系统 linux-dash
- tab item是tabelview时,tablecell被遮住