Javascript

来源:互联网 发布:淘宝退货卖家恶意拒收 编辑:程序博客网 时间:2024/05/20 06:40


Javasript的基本概念

1.      JavaScrpt是基于对象和 驱动的脚本语言,主要应用在客户端。

2.      js是弱类型,Java是强类型。

3.      Javascript的特点:

a)        交互性(它可以做的就是信息的动态交互)

b)        安全性性(不允许直接反问本地硬盘)

c)   跨平台性(只要是可以解释js的浏览器都可以执行,和平台无关。)

4.      HTML中用<script>标签来封装js的代码。属性type一定要是text/javascript。

注意:当script标签中定义了src属性链接了一个指定的js文件后,那么script标签内的所封装的js代码就不会执行。所以引入js文件和封装js代码的标签要分开。

Javascript语法知识

1.      Javascript语言:程序设计语言,也包括这程序语言最基本的的部分。只不过每一种语言表现形式不同。因为学习过Java语言,所以学习Javascript就非常容易。

2.      单行注释//;多行注释/**/

3.      变量:通过关键字var来定义。没有写var修饰都可以,没有分号也可以。比如var x=4。

建议开发中加上var和分号,增强阅读性。

a)        没有显式类型,但是有隐式类型。

b)        双引号,单引号包含的都是字符串。比如’哈哈’,“嘿嘿”

c)        undefined关键字:未定义的意思。就是说变量没有被赋值。

d)        定义的变量,在整个网页页面都有效,即类似Java的全局变量。不存在作用域,内存释放概念。当在函数中,是特例的,它是局部变量。开发中,尽量定义局部变量。

4.      运算符:

a)        (3.4+1.6)在网页运算出来是5,而不是5.0。和Java运算不一样。乘除运算会出来小数点运算,而不是取整去小数。

b)        在Javascript中,&&和||是逻辑运算符;&与|是位运算,而不是逻辑运算符。它也支持三元运算符。

c)        typeof可以判断变量的所属类型。常见类型有number,boolean,string,object。

比如判断typeof(12)==”number”,会打印true。

d)        “12”-1会产生运算等于11。“12”+1是拼接,而不是运算。在js中,true默认是1,false是o。在底层是用这两个数字表示的,所以可以参与其他运算。使用时注意。在js中,更有趣的是。0就是false,非0就是true;null就是false,非null就是true。

5.      语句:和Java中的判断语句,循环语句,选择语句等用法一样。

a)        判断语句x=3时,非0是true。要使用==来判断等于。建议开发使用3==x来判断。

b)        for循环变量是var定义的,而不要习惯写int。

c)        弹窗窗口打印语句:alert(code…..);

d)        网页打印语句:document.write(code…);

e)        在Javascript没有Java的转义字符。换行没有\r\n,而是写上html标签<br>。

没有制表符,而是用<table>标签的html用法。

 

应用:在网页上打印九九乘法表。代码如下:

<script type="text/javascript">

document.write("<table>");

for(var i=1;i<=9;i++){

document.write("<tr>");

         for(var j=1;j<=i;j++){

         document.write("<td>");

         document.write(i+"*"+j+"="+i*j);

         document.write("</td>");

         }

document.write("</tr>");

}

document.write("</table>");

</script>

 

 

6.      函数:

a)        格式:是通过function关键字来定义的,参数列表不用var定义,直接写变量。

function 函数名(参数列表){

         函数体;

         return返回值;

}

比如:function method(a,b){

         alert(a+”,”+b);

}

b)        调用函数:函数名();

比如:method(4,5);

c)        函数中其实有一个数组,专门用于存储接受的实际参数。argsments代表函数参数对象。

d)        函数的返回值:当函数没有具体返回值,调用函数时赋给一个新的变量时,该变量没有具体的值。弹出undefined。

e)        函数中的变量都是局部变量。

f)         其实在js中,函数就是一个对象。函数名就是该对象的引用。将函数名持有的函数引用赋值给新的变量,此变量也指向了该函数对象。当在浏览器弹出此变量时,会将此变量对应的对象变成字符串弹出。函数对象的字符串表现形式就是它自身的定义形式。

g)        动态函数:使用到了js中的一个对象Function。

例如:new Function(“x,y”,”var sum;sum=x+y;return sum;”);

类似于:function add(x,y){

                   varsum;

         sum=a+b;

return sum;

}

h)        匿名函数:简化了函数的书写,通常用于事件的处理。

格式是:function(){code… }.

7.      数组:是js中一个存放数据的容器。什么类型都可以装。

a)        特点:

i.                    长度不固定,是可以变的。

ii.                  数据类型不固定的。

b)        数组定义方式:

i.                    var arr=[];//长度为零的数组

vararr2=[3,4,5];//元素是3,4,5。java中是大括号,js是中括号。

ii.                  通过js中的Array对象来创建

例如:var arr=new Array(3);//创建指定长度的数组。

            var arr=newArray(4,9);//里面是两个数字,就是元素。

c)        打印数组对象时,数组对象直接变成字符串的格式:元素1,元素2…..

d)        当取出的索引没有赋值时,弹出undefined;

 

应用:求最值,将数组中最大的数打印到网页中。代码如下:

<script type="text/javascript">

var arr=[89,23,45,67,99];

 

function getMax(arr){

         var max=0;//定义一个临时变量

         for(var x=1;x<arr.length;x++){

                  if(arr[x]>arr[max]){

                            max=x;

                   }

         }

         return arr[max];//返回最大的数

}

 

var max=getMax(arr);

alert("max="+max);

 

</script>

 

 

8.      对象:常用的对象,具体方法查JSAPI。

a)        String对象:常用的方法

注意:获取String的长度:使用length关键字,和Java的形式不一样。

b)        Date对象:varmyDate=new Date();

c)        Math对象。直接使用Math.方法

d)        Boolean对象。

e)        Array对象。获取数组的长度:使用length关键字

f)         全局对象:

i.                    parseInt(“字符串”,“十进制”)方法的作用:

a)        将整数字符串转成整数

b)        将其他进制转成需要的进制。

ii.                  toString(“进制”):将要打印的数组以什么进制显示出来。

 

Javascript的高级知识

1.      Javascript的继承: prototype属性,原型,是Javascript常用对象中的属性,它是原型属性获取给对象的原型对象的引用。

比如说Array:即是将自定义的方法添加到Array对象中,每个数组都可以使用这个方法。当前数组引用使用该方法时,不需要在该方法中传参数。

自定义方法添加使用格式:Array.prototype.引用名=function(){code…..}

Java的区别和联系:它相当于Java中子类继承了父类,子类可以继承了父类方法后,还可以自定义自己的方法。这里父类相当于Array.prototype,子类相当于Array。不同之处是java预置的对象不允许添加方法,必须继承非final修饰的预置类或接口。而Javascript可以通过prototype属性可以往预置的对象添加自定义方法

 

应用1:需求:求数组中的最大值,必须使用Array中的方法。

分析:Array中没有该方法,但是题目必须要使用Array中的方法,所以使用prototype属性的关键字,让Array对象具备该方法。

         代码示例如下:

//JS中自定义好Array的方法

Array.prototype.getMax=function(){

         var max=0;

         for(var x=0;x<this.length;x++){//注意,这里要使用this

                   if(this[x]>this[max]){

                            max=x;    

                   }       

         }

         return this[max];

}

//HTML中开始使用

<script type="text/javascript" src="arraytool.js">

</script>

<script type="text/javascript">

         var arr=[12,34,56,78,99];

         var sum=arr.getMax();

    alert(sum);//弹出99

</script>

 

应用2:需求:将字符串两边的空格去掉。

              分析:字符串对象是String,该对象没有这种方法,我们可以自定义的方法加入到该对象中。

           代码示例如下:            

Js中自定好的String方法

String.prototype.trim=function(){

         var start=0;//首角标

         var end=this.length-1;//尾角标

         while(this.charAt(start)==" "){

                   start++;  

         }

         while(this.charAt(end)==" "){

                   end--;       

         }

         return this.substring(start,end+1);

}

HTML中使用该方法

<script type="text/javascript" src="stringtool.js">

</script>

<script type="text/javascript">

var str="     ab c     ";

alert("|"+str+"|");//没有调用该方法前

var endstr=str.trim();

alert(endstr);//调用该方法后

</script>

 

2.      自定义对象:用js完成面向对象的开发。就是使用函数来模拟完成对事物的描述。

例如:第一种:描述一个Person,

function Person(){//相当于Java中的构造方法

                    alert(“person is run”);

}

//创建一个Person对象。类似java调用了Person的构造方法。

var p=new Person();

p.name=”lisi” //给P对象添加了一个name属性并赋值。

p.age=23;

p.show=function(){ //给p对象添加一个方法。

         alert(this.name+”…..”+this.age)

}

                   p.show();//调用show方法。

alert(p.name);//打印属性

注意:在Java中,一创建对象就具备了属性和行为,但在Javascript中没有。

例如:var p2=newPerson();

alert(p2.name)//错误,页面无响应

 

         第二种:可以将第一种更趋向于Javabean描述。描述person时,就具备者属性和行为。

         functionPerson(name,age){

                   this.name=name;

                   this.age=age;

                   this.setName=function(name){

                            this.name=name;

}

this.getName=function(){

         return name;

}

}

Person.prototype.show=functionn(){//给该对象添加方法

         alert(this.name+":"+this.age);

}

varpersonObject=new Person("lisi",28);//创建一个Person对象

personObject.show();//调用Person对象的自定义方法。

 

3.      Javascript特有语句:

a)        with语句。不需要再创建对象直接就可以调用对象里的方法。类似Java同一个类中的静态方法调用静态方法的简写形式。

with(对象){

可以直接使用对象的属性和行为。

}

                   例如:原始写法

var personObject=new Person(“wangcai”,29);

                                               personObject.setName();

                                               personObject.getName();

                                               personObject.show();

简化书写成:

                            varpersonObject=new Person(“haha”,23);

with(personObject){

                            setName(“wangwang”);

                            alert(getName());

                            show();

}

b)        for in语句。遍历对象中的每个属性和方法。

格式:for(变量 in 对象){

         code…….

例如:for (x in personObject){

                                               alert(x);//打印对象中的每个属性和方法名。

                                               alert(personObject[x]);//打印每个属性的值和方法里的实现细节代码。

}

在数组中的情况:

var arr=[54,21,79];

for(y in arr){

         alert(y);//打印角标号

         alert(arr[y]);//每个角标的值

}