数组反转:
<script language="javascript" type="text/javascript">
var arr=[[21,34,545,656],[23,76,-78,76],[2,3,43,22]];
//定义一个新数组
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];
}
}
//成功,遍历arr2数组就是转置数组
for(var i=0;i<arr2.length;i++)
{
for(var j=0;j<arr2[i].length;j++)
{
document.writeln(arr2[i][j]+" ");
}
document.write("<br/>");
}
</script>
注意arr2初始化哪里的代码。
21 23 2
34 76 3
545 -78 43
656 76 22
JS是一种基于(面向)对象的语言。所有的东西都基本上是对象。
基于对象和面向对象概念上基本上没有什么区别。
js没有类,它把类功能称为原型对象。是同一个概念。主要是因为js没有class关键字。类==原型对象。
js对象的属性可以动态的添加,是动态语言的表现。
下面的列子的实例是用构造函数的方法来定义对象:
<script language="javascript" type="text/javascript">
//这里定义一个Cat类
function Cat()
{
}
Cat(); //如果这样用,是一个函数
var cat1 = new Cat();//如果这样用,是一个类,cat1是一个类对象
cat1.name = "小白";
cat1.age =3;
cat1.color ="白色"; //对象的属性可以没有限制的动态添加。
window.alert(cat1.name);
</script>
创建对象的方式有五种:
1用构造函数来构建类,再创建实例对象
基本语法:
function 类名()
{}
创建对象: var 对象名 =new 类名();
可以通过 对象名.constructor 来查看对象的构造函数
可以通过 typeof 对象名 来查看对象的类型。
window.alert(cat1.constructor); //显示cat1对象的构造函数。
window.alert(typeof cat1); //显示cat1的类型。
var b=123;
window.alert(b.constructor); //显示number这个构造函数。
window.alert(typeof b); //显示是number类型。
说明:js中一切都是对象,类也是一种特殊对象。可以通过这个对象创建其他对象。
类其实是Function类的一个实例对象。
如何判断实例对象是不是person类型:
if(a instanceof person) //用于判断对象是不是person类型。a.constructor ==person也可以判断a对象是不是person类型。
{
window.alert("a 是一个person对象");
}
访问对象属性的方法有两种:
对象名.属性名 //普通方法
对象名["属性名"] //动态方法,属性名可以通过拼接的方式来生成。
function Person() {};
var p1 = new Person();
p1.name = "黄成都";
window.alert(p1.name);
var val = "na" + "me";
window.alert(p1[val]);
js中对象在内存中存在的模式:
js还提供一种主动释放对象内存的机制:
delete a.age; //删除a对象的属性,导致对象a的其他引用页不能用age属性。即b.age失败。