javascript基础 第39天

2012-11-16 23:00:05 0  category: 第二阶段php

javascript是什么


Javascript主要是一门基于浏览器的客户端脚本语言。与浏览器配合完成一些特殊的行为和动作。它是基于对象的弱类型语言


脚本语言:是一种应用程序的扩展,使用户按照自己的意愿去运行,所有的基础功能都是由系统提供。大多数情况,直接解析,无需编译,有些语言小部份要编译。




Javascript能做什么?

打开新弹口的时候又跳出了一个窗口

Ajax


异步,局步数据互换ajax被开发出来。这也为后来的web2.0提供了很大的帮助。页在不需要全部重新载入,处理速度更快。



Javascript与java


许多人认为他们俩有很大的关系,实际上就语言本身来说,他们没有半毛钱关系。

可以理解为,他们没有关系。是两种不同的语言。



javascript的声明方式


浏览器可以关闭对于javascript的支持
Javascript他的声明方式有以下几种:
1,<script type="text/javascript">【中间写javascript脚本】</script>
2,<script type=“text/javascript” src=“【js文件】”></script>
3, href=“javascript:【javascript】;"




Hello world
使用三种不同的格式和任意位置



Javascript对于大小写绝对敏感!
变量,函数均敏感。



代码中多余的空格会被自动忽略。同一个函数,变量字母必须连在一块。一行代码可以分成多行书写。

并且可以在中间插入多行空格。但是,一定要利于读写。



进也属于空留白,空格和换行的内容。

对于不同的代码段,层次结构的代码段之间使用缩进,产生梯度方便人阅读和修改



在javascript中的分号,代表一行语句的结束。分号之后的语句是代表新的一行开始。这样能将一行中放置多个语句。

如果手动换行的情况下,分号可有可无。但是我们一般会加上。
以后,所有的脚本都加上分号



多行注释
/*
若干行代码
*/
单行注释
//




变量是指在程序运行过程中值可以发生改变的量。形象的理解,可理解为装载东西的一个容器。
Javascript的是一个弱类型语言。


在javascript中没有类似于const来声明常量的方法。
如果有人说跟你说常量,是指直接使用,而不被声明的值。

那什么是值?


1,值,在计算机中就是指一段数据。现实生活中,大千世界的所有东西,都是可以理解成为数据。那是数据的话,它总是有分类的?例如:人有男人和女人。(特例除人妖外),那计算机中呢?他对值是怎么分类的?我们将值的分类,用专业术语表示就叫作:“数据类型”!作用:用来存储数据。


数据类型


1,字符串类型
2,整型和浮点
3,布尔型
4, 不确定的类型
5,对象(比较特殊)




变量声明的特性


那在变量声明的特性:
1,严格区分大小写
2, 变量必须以字母,下划线开始,后面可跟下画线或数字,但不能用特殊字符
3,不能使用系统保留关键字


保留关键字列表


流程控制类Break,continue,for,for..in,if…else…,return,while
常用NaN,null,true,false,Infinity等
对象Array,boolean,Date,function,global,math,number,object,string
其他Delete,typeof,void,new,function,this,var,with



字符串声明


第一种形式
Var hello = ‘你好’;
第二种形式
Var hello = “你好啊”;



使用+号连接字符串和变量
Var name = ‘lamp’;
Var hello = ‘你好’;
Alert(name+hello);


字符串使用\进行转义。但有有些特殊的转义字符


转义字符作用
\n回车
\tTab制表符
\r换行,相当于回车
\‘相当于单引号
\”相当于双引号
\\相当于\



在javascript当中双引和单引作用一样,都是声时字符串或包含字符串。

特点:双引号中可以包含单引号,单引号中可以包含双引号


整型分为:
八进制       以0开始,后面接0到7
十进制       0-9
十六进制     以0x和0X开始后面接0-F

科学计数法表示中间e或E连接负或正整数



浮点,也叫双精度

也就是在小学中学的小数。
浮点是一个近似数,不要用来判断


只有真和假
也就是英语中的true和false


数组,在javascript中全称为数组对象,是属于对象类型。
还包括其他的很多对象类型,例如数学对象,字符串对象,时间对象,全局对象等。
在基础部份,我们将对象仅理解成为一个种类的功能(或方法)即可。



日期对象,与日期相关的一组功能

getDate()返回本地时间getHours()取得小时
getYear()取得年getSeconds()取得秒
getMonth()取得月getMinutes()取得分
getDay()取得日setYear()设置对象中的年
setMonth()设置对象中的月


其他类型

null 空
undefined 不确定的类型
NaN;非数字常量标识符



Javascript声明的数据是一种弱类型的数据,使用时无须指定数据类型。程序会根据程序运行情况,从一种类型转换成为另外一种类型。
举例,一个年龄与字符串相连



强制转换

parseInt() 转成整型
parseFloat() 转成浮点


数学运算符


+加+字符串连接或(正号)
-减或负号-(负号)
*乘++自加
/除--自减
%取余=赋值



关系运算符


==等于>和>=大于和大于等于
===全等<和<=小于和小于等于
!=不等instanceof
对象实例是否属于某对象
!==全不等



逻辑运算符


&&逻辑与:如果&&符两边的变量或常量都返回真,则返回真
||逻辑或:如果||两边一个为真,则为真
!逻辑非:对操作的逻辑值取反。



位运算符


与php中相同。

很少用到!!!


其他运算符


?:         条件运算符
New     创建实例对象
void    让表达示执行而忽略结果
typeof        检测类型
xxxx.length   .快速存取对象属性或方法
delete删除new创建的对象
,   按顺序读取左右两边的数据
[]数组存取
this         返回当前对象的引用



运算符的优先级


流程控制


If…else
while
for
switch…case
do…while
with
for…in…

break和continue语句


While循环



For循环是记数型循环
For(表达示1;表达示2;表达示3){
  要被循环的代码
}


Do..while循环



break退出循环
continue退出这一行但下一行继续执行



函数的定义


一个完成指定任务的已命名的代码段。
最小的单位就是函数
一个任务----一个功能----一个函数



函数的特点1


为什么要使用函数?
1,函数可以被反复使用,提高重用性
2, 有利于代码维护



函数的特点


1,函数通过函数名,只有被调用才会被执行,调用几次执行几次。
2,调用函数的过程,可以在函数之前,也可以在函数之后。
3,可以使用参数列表
4,参数的作用是是调用时改变函数的执行行为
5,函数有参数列表,在调用是给参数赋值(形参,实参)
6,函数到return后就不再执行。将结回返回至执行处
7,函数如果没有返回值仅仅是一个执行过程。



函数声明


函数声明使用
function 函数名(参数){
函数功能
Return    
}

代码没有膨胀可以重复使用
有利于程序维护
函数可在页面的任意位置调用
可以使用参数列表,但不能给初值
多个参数使用逗号分隔


参数列表的作用是调用时,改变函数的执行行为。
如果函数有参数列表则调用函数时为参数赋值。
在声明函数是,声明的函数参数为形参。在调用函数时,传递的函数为实参。


函数可以有返回值

算一个平方和
在函数中使用return 返回函数结果。
将结果返回到调用处。


函数的总结

用函数名调用函数去执行函数
可以通过函数名后面的()向函数传递数据
可以把函数名看作是函数体内的返回值
一个函数遇到return就返回,不在要return后面加任何代码,没意义



变量的作用域


局部函数
在函数中声明的变量就为局部变量,只能在当前函数中使用。
参数也是局部变量。参数可以在函数声明时赋值
全局函数
在函数外部声明的变量都是全局变量,在变量声明处到页面执行结束之前都可以使用变量。页面执行结束才释放这个变量。
如果函数内部声明一个与全局变量相同的函数,则以最近的变量使用为主。



局部变量


funtion show(){
var a=10;
}
show();
alert(a);



变量函数


变是变量的值是一个函数名。

通过变量名加上(),传入对应的参数。



匿名函数

var abc=function(x,y){  
 return x+y;  
}  
alert(abc(2,3));  


可变参数列表函数



arguments对象
传入的是一个数组对象。



变量函数演示说明


function demo(){
alert('@@@@');
}

var n=demo;
n();


在PHP当中使用默认参数会更简单,而在我们javascript里面需要做一个判断。用到我们之前所学的,未定义类型。


内部函数

在函数内部声明的函数,只在函数内部使用。


函数的使用



1,一种是自己定义的函数
2,系统内置的函数
(使用时需要知道以下三部份:
1,函数的功能---决定是否使用这个函数
2,函数的参数----决定函数怎么调用
3,函数的返回值----调用后怎么处理)
Javascript的函数都是在对象中的。




Javascript没有类的概念


对象
对象实例
我们该怎么做?
1,形成对象(可以自己写,也可以使用系统里面提供的)
2,通过对象形成对象实例
3, 使用对象实例中的成员


对象


Javascript是基于对象的语言。很多人在这一个地方,容易将对象,函数弄晕。
其实,仅仅是在写法上面有一些区别!
大家在这里,将javascript中的对象当成函数对待!!
只不过是在函数中加了几个特殊的关键字,在用法上面多了几种用法。



对象


第一步要写的就是形成对象。

第二步要干嘛呀?通过对象,形成对象实例。

第三步,我们要做的是使用对象实例中的成员。



形成对象实例


形成对象的话,这一步可以自己去写。也可以
使用系统提供的。
跟系统有关的功能,都是系统提供的。自己都是
写不出来的。
我们可以通过对象来形成对象实例



对象:就是一个类别内容的总结。

什么叫一个类型内容的总结呀?

假如说时间对象,系统里面提供的时间对象,数学对象,
字符串对象。


系统里对象举例



如果我想使用系统里面的时间,平方,开方,找到PI的值。

这是不是三类的东西呀?

相片放到哪个目录下,程序放到哪个目录下。



对象就是东西!
是一个类型的东西的总结。
时间对象,数学对象,字符串对象
对象有两种:
1,一种是变量(成员属性)
2,一种是函数(成员方法)


对象是一种类型是一种复合类型。(一个变量当中能存多个值。)
对象中可以有多个属性和多个方法(将相同类型和有一定关系的变量和函数组织在一起)
1,一种是自定义对象
2,一种是系统对象



声明一个时间对象


Var dt=new Date();
使用new关键字初使化date这个对象

Dt是对象实例
对象实例.成员属性
对象实例.成员方法


使用我们之前说过的this关键字。

实例化一个对象使用new关键字

用.来连接属性和方法


var abc = new Function



For…in…循环

通过in取得数组的索引集合



快速创建对象

Var a = {bcd:1,dec:2}



数组对象


为什么要使用数组?

就是让一个变量当中有多个值。
复合型数据的话,一个是我们之前所说的对象,一个是我们现在所讲的数组。


数组也是对象


需要使用new Array()来实例化一个数组对象

元素,下标,值这些概念。


创建数组的几种方式


1,var abc = new Array();
2,var abc = new Array(‘sina’,’qidian’);
3,var s = [‘’,’’,’’]

读取数组


数组对象加下标的型式


使用下标重新赋值即可



删除数组中的分元素



使用delete



数组对象的其他用法


1.html


<html>  
<script>
//alert('asdfasdf');alert('bbbbbbbbbbbbbbbbbbb'); alert('aaaaaaaaaaa');

/*

多行注释

var $a='ok qi';

var a='就是不同的变量';

alert($a);

alert(a);

alert(abc);

var a='我\t来';

var b="bbb"+a;

alert(b);

var a=123456;

alert(a);

var a=1.2e5;

alert(a);
var t=2;

if(t){
alert('php.xlxz.org');

}else{
alert('this is xlxz');

}
*/


// php 类 js把php的类叫作对象


// php 对象 js把php的对象叫做对象实例


//var d=new Date();


//alert(d.getDay());



// js 变量=null 空对象类型

// js 未声明的变量 undefined


//alert(typeof(t));


//var t='1.9px';

//alert(parseFloat(t));


var a=5;

var b=6;

alert(a%b);

var a=10;

var b=a--;

alert(b);

var a=5;

var b='5';

if(a!=b){
alert('晋江老刘太坏了');
}else{
alert('说');
}

var d=new Date();

if(d instanceof Date){

alert('这是真的');
}

//|| 短路的或 | 不短路的或

var b=1;
if(true|b++){

}
alert(b);

var b=1;
if(false & b++){

}
alert(b);

var a=true?5:6;

alert(a);
var a=new Date();
delete a;
</script>
</html>


127.php


<?php 
class person{


}
$p=new person();
if($p instanceof person){

echo '这是真的';
}else{

echo '这是假的';
}

?>


array.html


<script> 
var d=['a','b','c','d'];

var f=new Function();

var str=new String('abc');

alert(str);

var d=new Array('a','b','d','d');

for(i=0;i<d.length;i++){

document.write(d[i]+'<br>');
}

alert(Math.random());

</script>


function.html


<script> 

function demo(a,b){

if(typeof(a)=='undefined'){
a=1;
}
if(typeof(b)=='undefined'){
b=2;
}
return a+b;
}


var t=demo();

alert(t);

//函数体外声明的均为全局变量,函数体内声明的全为局部变量

var t=10;

function demo(){

t=20;

t+=1;

alert(t);
}

demo();

alert(t);

var a=function(data){

alert(data);
}

a();

jia(5,6,t);
function jia(num1,num2,callback){
var t=num1+num2+callback(num1,num2);
alert(t);
}

function t(a,b){
return a*b;
}

ys(2,3,function(a,b){

return a*b;
});

function ys(num1,num2,callback){
var t=num1+num2+callback(num1,num2)
alert(t);
}
function chu(a,b){
return a/b;
}
</script>


hello.js


alert('welcom php.xlxz.org');


if.html


<script> 

var a=2;

if(a==1){
alert('if还是那个if');

}else if(a==2){

alert('星星还是那个星星');
}else if(a==3){

alert('月亮还是那个月亮');
}



document.write('<table width="800" border="1">');


var i=0;


while(i<10){


if(i%2){

document.write('<tr>');
}else{

document.write('<tr bgcolor="pink">');
}


var j=0;

while(j<10){

document.write('<td>'+(i*10+j)+'</td>');

j++;

}


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

i++;

}









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



var d=new Date();

var j=d.getDay();

var str='';
switch(j){
case 0:
str='星期日';
break;
case 1:
str='星期一';
break;

case 2:
str='星期二';
break;

case 3:
str='星期三';
break;

case 4:
str='星期四';
break;

case 5:
str='星期五';
break;

default:
str='星期六';
break;





}

document.write(str);



for(var i=0;i<10;i++){

document.write(i+'<br>');
}


do{

document.write('先套麻袋');
}while(false);




with(document){
write('1111111111111');

write('22222222222');


write('333333333333333');
}



//document


for(a in document){

document.write(a+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+document[a]+'<br>')

}


</script>


json.html


<script> 
var person={name:'张三',sex:'男',age:18,je:10000.00,say:function(){

alert(this.name+this.sex+this.age);
}}

for(a in person){
document.write(a+' '+person[a]+'<br>');
}
</script>


jw.html


<script> 

var t=[
['a','b','c'],
['d','e','f'],
'hh',
'tt'
];


delete t[0][1];

for(i=0;i<t.length;i++){

if(typeof(t[i])=='object'){


for(j=0;j<t[i].length;j++){
if(typeof(t[i][j])=='undefined'){
continue;
}


document.write(t[i][j]+'<br>');

}
}else{

document.write(t[i]+'<br>');
}

}



/*
for(a in t){

for(b in t[a]){

document.write(b+'------------'+t[a][b]+'<br>');
}

}
*/

</script>



kb.html


<script> 
function demo(){
var t=arguments; //func_get_args();
var s=0;
for(i=0;i<t.length;i++){
s+=t[i];
}
alert(s);
}
demo(1,2,3,4,5,6,7,8,9,10);
</script>


ms.php


<?php 
$str='1234567';
$str[$str[2]]=6;
echo $str;
?>


nb.html


<script> 
//可以在调用处的上面,也可以在下面
//做人就要像js的内部函数,可上可下
function demo(n,m){
function jia(i,j){
return i+j;
}
var jj=n+m+jia(n,m);
alert(jj);
}
demo(3,4);
</script>



object.html


<script> 
var person=new Object();
person.name='上课';

person.stat='很开心';

person.home='下了';


person.mp='谁';


person.say=function(){

alert(this.name+this.stat+this.home);
}

person.haha=function(){

alert('队'+this.mp);
}
person.happy=function(){

alert('心');
}
person.say();
</script>


object2.html



<script> 
function person(name,sex,age){
this.name=name;
this.sex=sex;
this.age=age;

this.say=function(){
alert('我叫'+this.name+'我的性别是'+this.sex+'我的年龄是'+this.age);
}
this.sj=demo;
}
function demo(){
alert(this.name+'php睡觉');
}

var p1=new person('www','php',15);


var p2=new person('php','xlxz',20);
p2.say();
</script>