一、JavaScript的应用:被用于网页(HTML页面)中添加交互行为、改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。
二、Javascript 的具体内部实现:
1)最主要的就是函数的使用;
2)Javascript内部的javascript语句可以封装,方便美化界面;
3)Javascript内部有类的使用;
4)JavaScript中的数组比java中的数组更好使用;
5)JavaScript 是一种解释性语言(即代码执行不进行预编译);
6)javascript是弱类型语言,java是强类型语言。
三、JavaScript的使用
1、书写格式:
<span style="font-family:Microsoft YaHei;"><script type="text/javascript">
alert("hello world");//实现弹出对话框
doucumen.write(""); //实现在页面内显示数据
</script></span>
Javascript可存在程序中的任何位置(不包含title内),建议放在head内部,但如果javascript内容多,最好放在程序尾部,不然会影响加载的速度。
2、js与html的融合
a)第一种:最原始的使用。
<span style="font-family:Microsoft YaHei;"> <script type="text/javascript" >
alert("hello world");
</script></span>
b)把js代码封装到单独的.js文件中
<span style="font-family:Microsoft YaHei;"> <script type..... src="1.js">
</script></span>
引入外部文件的script标签内不要再写其他js代码了,会被覆盖。注意:外部.js文件的编码格式要与引入该文件的html页面一致。
c)写在a标签中
<span style="font-family:Microsoft YaHei;">< a href="javascript:alert('hello world')"></a>
< a href="javascript:void(0)"></a> //下划线</span>
3、变量
a)变量的类型由具体的值来决定
<span style="font-family:Microsoft YaHei;"> var a="hello"; //这里声明的就是一个String类型的数据。(字符串)</span>
注意:javascript内部没有字符串和字符之分,也没有单引号和双引号之分;
b)只声明了没赋值,值undefined<span style="font-family:Microsoft YaHei;"> var b;
alert(b);//undefined</span>
c)没声明,直接赋值
<span style="font-family:Microsoft YaHei;"> name="zs";</span>
d)没声明也没赋值这个会报错。
4、数据类型
1)基础数据类型:number(数字),string(字符串),boolean(布尔值),null,undefined
a)number(数字),特殊值NaN,非法数字。3*"a"=NaN。
b)string(字符串):'hello world'。注意:js中没有字符的概念。
c)boolean(布尔值):除了true,false以外其他类型的值也可以表示真假。false,0,null,undefined,NaN,""表示假,其他的都表示真。
d)undefined:本身是数据类型,而这个数据类型有一个唯一的值是undefined。表示未定义的,未指定的。
<span style="font-family:Microsoft YaHei;"> var name;
</span>
注意:undefined使用的场景:
当通过var声明变量,却没有赋值,那么这个变量的值就是undefined。
js中所有的函数都有返回值,如果你没有通过renturn明确返回什么,那么函数的默认返回undefined。
当访问了对象不存在的属性时,那么值也是undefined。
e)null:本身是数据类型,而这个数据类型有一个唯一的值是null。表示一个无效的"对象"。
<span style="font-family:Microsoft YaHei;"> var o=null;//处于代码的可读性,用来表示自己的编码水平比较高。</span>
2)引用数据类型:object, function
5、运算符
1)算术运算符:+ - * / %
其中,+ 有2种用法:
a)表示算术运算符表示求和,其中null=0,false=0,true=1。
b)字符串连接符:当左右两边有一个是字符串的时候,立刻变身为字符串连接符,反之就是运算符。
2)逻辑运算符 && || !!
a)typeof:用来判断一个值是数据哪种类型的,返回的是数据类型的名称 字符串。其中null数据类型比较特殊 typeof null的结果是object。
a)instanceof:用来判断一个值是否是某个类的实例,结果是布尔类型的值。
<span style="font-family:Microsoft YaHei;"> var d=new Date();
alert(typeof d);//object
alert(d instanceof Date);//true</span>
6、语句
1)if语句:条件语句,把值放在前面,把变量放在后面。
2)for语句:循环语句。
3)while语句:循环。
7、函数
1)函数的作用:控制代码的执行时机;对代码进行封装,反复调用。
2)函数的定义:
a)第一种方式:
<span style="font-family:Microsoft YaHei;"> 关键字 function 函数名(参数名){
js代码.
return 返回值.//有需要的时候明确指定返回值.
}</span>
b)第二种方式:通过匿名函数来定义,匿名函数本身就是一个值。在内存中对应一个对象。
<span style="font-family:Microsoft YaHei;"> var myfn=function(){
alert("hello");
}</span>
c)第三种方式:
<span style="font-family:Microsoft YaHei;"> var myFn=new Function("参数名,参数名1","函数体中的可执行代码");
var myFn=new Function("a,b","alert(a+b);");
myFn(1,2);//弹出3.</span>
3)函数的特点:js中的函数是可变参的,函数名称相当于变量。同名的函数相当于对函数名称重新赋值。而这个值就是函数在内存中所对应的地址。
8、全局变量
1)在script标签内定义,在函数外定义的变量都是全局变量。
2)在函数内如果直接给一个没有声明的变量赋值,该变量是全局变量。
注意:单一页面中,多个script标签在内存中是一片区域。
9、局部变量
在函数内通过var声明的变量是局部变量。
10、数组1)数组定义:
<span style="font-family:Microsoft YaHei;">var arr=new Array();//定义了一个数组
var arr1=[];</span>
js中数组是程序员唯一可以用来装数据的容器。
2)数组特性:a)可以跨越下标赋值,被跨越的部分值是undefined类型。
b)同一个数组可以装载不同类型的值
<span style="font-family:Microsoft YaHei;"> arr1[5]=true;
arr1[10]=13;</span>
c)可以通过length直接更改数组的长度。length=0相当于清除数组。
d)数组是可变长的。
e)var arrNumbers=new Array(2);//只有一个数字表示数组长度,一定要是整数,小数报错
3)数组常用方法:a)push:向结尾处添加一个或多个元素;
<span style="font-family:Microsoft YaHei;"> var arrString=[];
arrString.push("hello");
arrString.push("world");</span>
b)join:将数组中的元素拼接成字符串,join:相当于java中的StringBuider...的实例的toString方法。
<span style="font-family:Microsoft YaHei;"> alert(arrString.join(" "));//join方法可以指定连接符号,默认情况下是","</span>
11、面向对象
1)类:类就是一个函数,当函数用来创建对象时他的作用发生了变化,称之为类。
<span style="font-family:Microsoft YaHei;">function Person(){ }</span>
2)创建对象:
<span style="font-family:Microsoft YaHei;">var p=new Person();</span>
3)扩展属性和方法。
对象.属性名=属性值
对象["属性名"]=属性值
<span style="font-family:Microsoft YaHei;">p.name="张三";//给对象扩展姓名属性
p["age"]=18;//给对象扩展年龄属性.
p.eat=function(){ //当一个对象的属性值是一个函数的时候那么这个属性就称之为该对象的方法.
alert("在不停的吃");
}</span>
4)构造函数
a)js中类本身就是构造函数.
b)每个对象都有一个constructor属性,表示该对象的构造函数
c)通过构造函数创建对象以后,对象依然可以自行的扩展属性和方法.
d)js中的每一个函数内部都有一个this,this表示当前对象(谁调用我就是谁).
12、prototype(通过function对象prototype属性添加类原型的属性和方法)
<span style="font-family:Microsoft YaHei;">var Car = function(){
}
var car1 = new Car();
// 通过function对象 prototype属性
// 去定义类模板 原型中属性 和 方法
Car.prototype.name = "保时捷";
var car2 = new Car();
alert(car1.name);
car2.name = "宝马";
alert(car1.name);</span>