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]);//每个角标的值
}
- Javascript
- JavaScript
- javascript
- javascript
- javascript
- javascript
- javascript
- JavaScript
- javascript
- JavaScript
- Javascript
- javascript
- javascript
- JavaScript
- javascript
- javascript
- JavaScript
- javascript
- 第一学历
- C++回忆录
- 奋斗黑马程序员----Java几点常用知识
- 软考
- 重用EGORefreshTableHeaderView方法实现下拉更新的方法
- Javascript
- JDBC中使用事务编程步骤
- ACM-大数N!的位数公式
- UVa 116 - Unidirectional TSP
- Java六种异常处理的陋习(转载)
- RAM、ROM、Flash
- centos + qmail 在本机能telnet 到smtp 外网不能
- ubuntu下gcc的安装与使用
- Android中如何实现文件下载