JavaScript
- js是基于对象和事件驱动的脚本语言,主要应用在客户端
- js是弱类型,java是强类型(每种类型都是固定的,都有具体的定义)
js和html
两者结合的方式:
- 将js代码封装到script标签中
- 将js代码封装到js文件中,通过script中的src属性导入
- 注意:如果script标签中使用src属性,那么同一个script标签内封装的js代码不会执行,所以通常导入js文件都是单独用一个script标签
js语法
js定义变量使用关键字var
变量
var x = 3;
x = "abc";//重新赋值为字符串abc(因为是弱类型)
x = true;
var a = 3564;
运算
alert("a="+a/3000*3000);//js为弱类型,所以int/int可以等于float
alert("12"+1);//121
alert("12"-1);//11
alert(true+1);//2,在js中true默认为1
var n = 3,m;
m = n++;
alert("n="+n+",m="+m);//n=4,m=3
alert(n==5);//false
var t = 4;
alert(t>3 && t<6);//true,逻辑运算符
alert(!t);//false,t为真
alert(t>3 & t<6);//1,位运算符
alert(t & 3);//0,100&011=000=0
3>0?alert("yes"):alert("no");//yes,三元运算符
alert(3>1?100:200);//100
//想要获得具体的值的类型,可以通过typeof实现
alert(typeof("abc"));//string
alert(typerof(2.3));//number
js语句
//if语句
var x = 3;
if(4==x){alert("yes");}//建议将常量放左边
else{alert("no");}
js中数组的定义:
- var arr=[ ];var arr = [12, 23, 44];
- 使用js中的Array对象完成
var arr = new Array(5);长度为5的数组
特点:
- 长度可变
- 元素的类型是任意的,建议存储统一类型元素
js函数
function demo(){
alert("demo run");
return;
}
demo();
function add(x,y){
return x+y;
}
var z = add(4,8);
//js函数不存在重载形式
//动态函数
var add = new Function("x,y","var sum; sum = x+y; return sum;");
var a = add(4,8);
alert("a="+a);//12
//动态函数的参数和方法体都是通过字符串传入的
- 在脚本片段中定义的变量为全局变量
- 在函数中定义的为局部变量
常见对象
Object对象
obj = new Object([value]);
toString();返回对象的字符串形式
valueOf();返回对象的原始值
var arr = [1,2,3];
alert(arr.toString());//1,2,3 数组的字符串形式
function show(){
alert("show run");
}
alert(show.toString());//function show(){alert("show run");} 函数的字符串形式
String对象
//定义一个函数,去除字符串两端的空格
function trim(str){
var start,end;
start = 0;
end = str.length-1;
while(start<=end && str.charAt(start)==" "){
start++;
}
while(start<=end && str.charAt(end)==" "){
end--;
}
return str.substring(start,end+1);
}
//prototype:返回string对象的原型
String.prototype.len = 99;//给string的原型对象添加一个属性len,其值为99
String.prototype.trim = function(){trim的函数体,arr改成this}
Array对象
//concat();延长数组
var arr = ["aa","bb","cc"];
var arr2 = ["lzh",18,11];
var newarr = arr.concat("s",arr2);//["aa","bb","cc","s","lzh",18,11]
arr.join("-");//aa-bb-cc
arr.reverse();//反转
arr.shift();//删除并返回第一个元素
arr.pop();//删除最后一个
arr.slice(start,end);//切片,含头不含尾
arr.splice(start,count,ele1,ele2...);//删除元素并替换
arr.unshift("fxl");//将指定元素插入开始位置并返回数组
Date对象
var date = new Date();
date.toLocaleString();
var day = date.getDay();
var month = date.getMonth()+1;//从0开始
var millitime = date.getTime();
//省略date的写法
with(date){
var day = getDay();
var month = getMonth()+1;
var millitime = getTime();
}
全局方法
parseInt();返回字符串的整数值
var a = parseInt("123");//123
var b = parseInt("abc");//NaN
//将指定进制转换成十进制
var num = parseInt("110",2);//6
自定义对象
js是基于对象而不是面向对象的,不具备描述事物的能力
function Person(){
alert("person run");
}//相当于构造器
var p = new Person();//建立对象
p.name = "lisa";//添加属性
p.age = 23;
p.show = function(){
alert("name:"+this.name+",age"+this.age);
}//添加方法
p.show();//调用方法
function Person(name,age){
this.name = name;
this.age = age;
this.setName = function(name){
this.name = name;
}
this.getName = function(){
return this.name;
}
}//含参构造器
var p1 = new Person("syh",16);
for(x in p1){
document.write(x+":"+p1[x]+<br>);
}//取出对象中的属性值
var map = {
name:"zhaosi",age:27
}//集合
alert(map.name+":"+map["age"]);