数组反转:
<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失败。