---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
三、数组
u 一维数组
1、基本用法
var 数组名=[元素值,……];元素的值可以是任意类型!
例:var arr=[4,56,”hello”,true];
2、Js中的数组是引用传递
如果角标越界返回undefine
3、js的数组可以动态增长,因此数组大小可以不用事先制定。
例:
var a=[2,3];
window.alert(a.length);//2
a[2]=56;
window.alert(a.length);//3
alert(a[2]);
4、字符串的split()方法:用于把一个字符串分割成字符串数组。
返回值为一个字符串数组。
例:
<script type="text/javascript">
var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
</script>
5、遍历一维数组
可以使用for循环和while循环。还可以使用for循环如下形式:
arr=[45,90,0];
arr[‘gg’]=900;//数组下标可以用字串表示
for(var key in arr){
window.alert(key+”=”+arr[key]);
}
u 多维数组
二维数组
例:
var arr=[[“shanghai”,123,3],
[‘a’,’b’,’c’],
[90,0]];
//转置
var arr=[[2,4,6,8],[9,8,7,3],[9,6,5,1]];
var arr2=[];
for (var i=0;i<arr[0].length ;i++ )
{
arr2[i]=[];
}
for (var i=0;i<arr.length ;i++ )
{
for(var j=0;j<arr[i].length ;j++ )
{
arr2[j][i]=arr[i][j];
}
}
for (var i=0;i<arr2.length ;i++ )
{
for(var j=0;j<arr2[i].length ;j++ )
{
document.writeln(arr2[i][j]+" ");
}
document.writeln("<br>");
}
排序
四、js面向(基于)对象编程
Javascript是一种基于对象的语言。
Js中没有类(class),把类称为原型对象,因为两个概念在编程中的作用一样,都是一个意思。
例:
//创建原型对象\类
//cat类
function Cat(){
}
Cat();//函数
var cat1=new Cat();//cat1就是一个对象(实例)
cat1.name="小白";
cat1.age=3;
cat1.color="白色";//js中的对象的属性可以动态的添加
//属性没有限制
window.alert(cat1.name+cat1.age+cat1.color);
u 类(原型对象)和对象的区别和联系
(1)类是抽象的概念,代表一类事物
(2)对象是具体的,代表一个实体
(3)对象是以类(原型对象)为模板创建的
u 创建对象的方式有五种
1、工厂方法
2、使用构造函数来定义类
3、使用prototype
4、构造函数及原型混合模式
5、动态原型模式
u 构造函数定义类(原型对象)
基本语法
function 类名(){
}
Js中一切都是对象!
例:
function Person(){}
var a =new Person();
window.alert(a.constructor); //a对象实例的构造函数
window.alert(typeof a);//a 的类型是什么
var b=”1234”;
window.alert(b.constructor);
window.alert(typeof b);
如何判断某个对象是不是某个类型
function Person(){}
var a= new Person();
// 思考:如何判断一个对象实例是不是Person类
if (a instanceof Person)
{
window.alert("OK");
}
if (a.constructor==Person)
{
window.alert("OK2");
}
补充知识点:
var abc=98;//全局变量
function test(){
//再函数里,如果不带var 则表示全局的abc变量
//如果带var 则表示重新定义一个新的变量 --在不同的栈里
abc=900;
}
u 访问成员变量的方法
1、对象实例名.属性名;
2、对象实例名[“属性名”];
对象引用问题的说明
function Person(){}
var a= new Person();
a.age=10;
a.name="小明"
var b=a;
b.name="小白";
window.alert(b.age+b.name+"min"+a.name);
b=null;
window.alert(b.age+b.name+"min"+a.name);//出错
对象回收机制(gc)
Js还提供一种方式,主动释放对象内存。
delete 对象名.属性;//删除a对象的属性
u this
当创建一个对象后就希望该对象自动的拥有某些属性!
Function Person(){
}
function Person(){
this.name="abc" //公开属性
this.age=90;
varna="ddd"; //这个属性是私有的 不能访问
//这个方法是公开的(特权方法)
this.show=function(){
window.alert(this.name+this.age);
show2();
}
//这个方法是私有的 不能调用
functionshow2(){
window.alert(na);
}
}
var p1= new Person();
p1.show();
var p2= new Person();
window.alert(p1.name+" "+p2.name);
记住:哪个对象实例调用this所在的函数,那么this就代表哪个对象实例。
注意:this不能放在类的外部使用,否则调用者将发生变化。
例:
function test1(){
window.alert(this.v);
}
var v=90;
window.test1();
test1();
l 给对象添加指定函数的几种方式
第一种:
对象名.属性名=函数名;//相当于把函数赋给对象名.属性名
调用:对象名.属性名();
例:
function Person(){
this.name="name";
this.age=90;
}
function show1(){
window.alert(this.name+this.age);
}
var p1=new Person();
//把show函数给p1.abc
p1.abc=show1;
//p1.abc=show1();把函数值给p1.abc
p1.abc();
第二种
对象名.属性名=function 函数名 (){
代码;
}
调用:对象名.属性名(参数列表);
例:
function Person(){
this.name="name";
this.age=90;
}
var p1=new Person();
//把show函数给p1.abc 方法被p1独占
p1.abc=function show1(){
window.alert(this.name+this.age);
};
p1.abc();
第三种:
前面几种方法,每建立一个对象都独占函数代码,如果对象多久会影响效率。Js提供了另一种方法:原型法(prototype)
例:
function Dog(){}
//使用prototype[类] 去绑定一个函数
Dog.prototype.show=function(){
window.alert('小狗');
}
var dog1=new Dog()
dog1.show();
var dog2=new Dog()
dog2.show();
补充:==的作用
1、当==的两边都是字符串的时候,则比较内容是否相当。
2、当==两边是数字,则比较大小是否相等。
3、当==两边是对象或者是对象函数,则比较地址是否相等。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------