23@JavaScript_day03
1、javascript是什么?
javascript是一种在客户端(浏览器)执行的脚本语言(必须嵌入到html文件当中才能运行)。其作用包括:
1)客户端验证
2)动态效果(比如菜单)
3)访问浏览器(比如获得浏览器的版本)
4)是ajax核心技术之一
2、javascript的组成部分
1)ECMAScript: 由ECMA组织制订的一个规范,主要定义了javascript的语言基础部分,各个浏览器(包括ie,firfox,chrome,safari,opera)都支持得很好。
2)dom:包括两部分,一部分是w3c组织制订的规范,另外一部分是各个浏览器自己支持的dom规范。目前,w3c dom规范各个浏览器支持的程度不一。
3)bom: 浏览器对象模型,浏览器内置的一些特殊对象,主要包括window,navigator,location,screen,xmlhttprequest对象,通过这些对象,可以访问浏览器窗口等。这部分没有规范,但是大部分浏览器都会提供这些对象的支持。
3、javascript语言基础
1)标识符
a_$开头,后面可以接a_$数字。
比如:
$a ok
_abc ok
3a error!
2)语句
以";"结尾。虽然不以";“结尾也可以,但建议最好加上。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 if(1>0){ 2 alert('hello'); 3 }
好与:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 if(1>0) 2 alert('hello');
3)关健字与保留字
4)变量
javascript是一种弱类型语言,不需要编译,直接执行。变量的类型在运行阶段确定,并且可以改变。
var i = 0; ok
i = 'hello';
number i = 0; error!
5)数据类型
a, 简单类型
number:数字类型 (不像java,有int,double...)
string:字符串类型(不像java,不是一个对象)
boolean:布尔类型
null:空类型
undefined:未定义类型
b, 复杂类型
内置的复杂类型
b1,3个基本类型对应的包装类型Number,String,Boolean
String类型的属性和方法:
length属性 返回字符串的长度
charAt(index) 返回指定位置的字符
substring(from, to) 返回子字符串
indexOf(str) 指定字符串在原字符串中第一次出现的位置
lastIndexOf(str) 指定字符串在原字符串中最后一次出现的的位置
match(regexp) 返回匹配指定正则表达式的字符串,返回的结果是一个数组。
search(regexp) 返回按照正则表达式检索到的字符串位置
toLowerCase/toUpperCase 返回小写/大写形式
replace(regexp,'abc'); 替换符合reg正则表达式规定的字符串
b2, 函数 Function
函数实质是一个Function对象。
比如
function f1(){}
f1(即函数名)是一个变量,指向了一个Function对象。
函数可以有返回值,但是不能声明返回类型
函数内部可以使用arguments[index] 来获得实际参数的值,index下标从0开始。
b3, 数组 Array
js数组的长度可变
js数组的元素的类型可以不同。
常用属性和方法:
length属性:返回数组的长度
toString()方法, 返回数组的字符串表示
concat()方法, 用于连接两个数组,生成一个新数组。
join()方法,用于将数组中的各个元素连接成字符串。
reverse()方法,将数组反转
slice():用于截取数组的一部分并以数组的形式返回。
sort()排序,可通过如下形式来重新定义排序方式:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var arr4 = arr3.sort(function(a1,a2){ 2 return -a1.length + a2.length; 3 });
b4, RegExp
test方法:用来测试字符串是否匹配正则表达式的要求,如果符合,返回true,否则,返回false。
比如:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var str = '132234asdf'; 2 var reg = /^\d{6}$/; 3 var rs = reg.test(str);
内置的对象(Math)
用于数学计算
random(): 返回一个0<= 随机数 < 1
ceil(): 向上取整
floor():向下取整
双色球:
红球:
从1~33中取6个数,不能重复,按从小到大输出。
蓝球:
从1~16中取1个数。
比如输出:
12,13,22,19,21,33,9
自定义类型
使用函数的语法来定义一个类
比如:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 function Person(name,age){ 2 //加this修饰的变量称为属性 3 this.name = name; 4 this.age = age; 5 //如果属性值是一个函数,就是一个方法。 6 this.info = function(){ 7 alert(this.name + ' ' + this.age); 8 }; 9 this.play = function(game){ 10 alert(this.name + 'is playing ' + game); 11 } 12 }
使用Person类来创建一个实例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var p = new Person('sdd',22); 2 //访问属性 3 alert(p.name); 4 //访问方法 5 p.play('football');
如果要创建一个javascript对象,除了可以通过以上方式(先定义一个类型,然后利用这个类型创建实例),还可以通过以下两种方式来创建。
方式一: 利用Object类型
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var p = new Object(); 2 //javascript是一种动态语言:即对象在运行时可以随时增加新的属性和方法。 3 p.name = '小龙女'; 4 p.age = 22; 5 p.play = function(game){ 6 alert(this.name + ' is playing ' + game); 7 };
方式二: 使用json语法
{属性名:属性值,属性名2:属性值2...}
注意:
a,属性名可以用''引起来。
b,属性值可以是string,number,null,boolean,Object。
c,属性值如果是string,必须使用''引起来。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 var p = {'name':'zs','age':23,'play':function(){ 2 alert('playing...'); 3 }};