Microsoft JScript 运行时错误 对象不支持此属性或方法

『不要把js函数名和页面元素名命名为相同的名称,否则会产生不可预料的错误。 』

Microsoft JScript 对象是属性和方法的集合。
一个方法就是一个函数,是对象的成员。
属性是一个值或一组值(以数组或对象的形式),是对象的成员。
JScript 支持四种类型的对象:
内部对象、生成的对象、宿主给出的对象(如internet浏览器中的window和 document)以及activex对象(外部组件)。
作为数组的对象在JScript 中,对象和数组几乎是以相同的方式处理的。
对象和数组均可以被赋予任意值,实际上数组只是一种特殊的对象。
数组和对象的区别在于数组有一个“奇妙的”length属性,而对象没有。
这意味着可以给数组的一个元素赋予比其他元素更大的值。
例如,myarray[100]="hello",然后length属性将自动地被更新为101(新长度)。
同样,如果修改数组的 length属性,将删除不再是数组部分的元素。
JScript 中所有的对象均支持“expando”属性或那些可以在运行时动态添加和删除的属性。
这些属性可以有包含数字的任意名称。
如果属性的名称是简单的标识符<<参考标识符规则>>,可以在对象名称的后面加句点,
例如:var myobj=new object();
//添加两个expando属性,’name’和’age’
myobj.name="fred";
myobj.age=42;
如果属性名称不是一个简单的标识符,或者在写脚本的时候不知道,可以在方括号中使用任意表达式来索引属性。
在JScript 中所有expando属性的名称在被添加到对象之前被转换为字符串。
var myobj=new object();
//添加两个无法写在 object.property语法中的expando属性。
//第一个属性包含无效字符(空格),所以必须写在方括号里。
myobj["not avalid identifier"]="this is the property value";
//第二个expando名称是一个数字,所以也必须写在方括号里。
myobj[100]="100";
传统的作法是赋给数组元素以0开始的数字索引。这些数组元素与length属性相交互。
然而,由于所有的数组也是对象,也支持expando属性。
请注意,虽然如此,expando属性并不以任何方式与length属性相交互。
例如:
//三个元素的数组
var myarray=new array(3);
//添加数据
myarray[0]="hello";
 myarray[1]=42;
myarray[2]=new date(2000,1,1);
//显示数组的长度 3
window.alert(myarray.length);
//添加某些expando属性
myarray.expando="JScript !";
myarray["another expando"]="windows";
//仍然显示 3,因为两个expando属性并不影响长度。
window.alert(myarray.length);
虽然JScript 并不直接支持多维数组,但是可以在数组元素中存储任意种类的数据(包含其他数组)。
所以通过在另一个数组的元素里存储其他数组可以得到多维数组的特性。
例如,下面的代码为最大为5的数字建立了乘法表:
//若是更大的表请改变本数
var imaxnum=5;
//循环计数
var i,j;
//新数组。由于数组从0开始计数,而不是1,所以数组大小为imaxnum+1。
var multiplicationtable = new array(imaxnum+1);
//为每个主要的数做循环(表中的每一行)
for(i=1; i<=imaxnum;i++)
{
   //生成表中的列
   multiplicationtable[i]=new array(imaxnum+1);
   // 将乘法的结果存在行中   for(j=1;j<=imaxnum;j++)
   {
    multiplicationtable[i] [j]=i*j;
   }
}
window.alert(multiplicationtable[3][4]);    //显示 12
window.alert(multiplicationtable[5][2]);    //显示 10
window.alert(multiplicationtable[1][4]);    //显示4


『文章来源:www.ititgo.com』

你可能感兴趣的:(Microsoft JScript 运行时错误 对象不支持此属性或方法)