Jscript 对象是属性和方法的集合。一个方法就是一个函数,是对象的成员。属性是一个值或一组值(以数组或对象的形式),是对象的成员。Jscript 支持四种类型的对象:内部对象、生成的对象(创建自己的对象)、宿主给出的对象(如 Internet 浏览器中的 window 和 document)以及 ActiveX 对象(外部组件)。
Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。
主要(基本)数据类型是:
字符串 String对象
数值 Number 对象
布尔 Boolean 对象
复合(引用)数据类型是:
对象
数组
特殊数据类型是:
Null
Undefined
javascript和java一样,是通过 new 来创建对象,不同在于所有的对象都是通过 var 来声明,javasccript的基本类型对象很少方法显示调用对象。
String 对象可用字符串文字显式创建。用这种方法创建的 String 对象(指以标准字符串形式)与用 new 运算符创建的 String 对象处理上不同。所有字符串文字共享公用的全局字符串对象。如果为字符串文字添加属性,则它对所有标准字符串对象都是可用的:
var alpha, beta;
alpha = "这是一个字符串";
beta = "这也是一个字符串";
alpha.test = 10;
在前一示例中,这时为 beta 和所有将来的字符串定义 test。然而,在下面的例子中,被添加属性的处理略有不同:
var gamma, delta;
gamma = new String("这是一个字符串");
delta = new String("这是也一个字符串");
gamma.test = 10;
在这种情况下,不为 delta 定义 test。每个用 new String 声明的 String 对象有其自己的一组成员。这是对 String 对象和字符串文字的处理不同的唯一情况。
javascript 脚本 中创建数组: Array :数组、队列
var a=new Array(10);
for(var i=0;i<a.length;i++){
a[i]=i;
document.write("a[i]"= + a[i]);
}
java 中创建数组
定义并初始化方法一:
String[] a = new String[3];
a[0] = "a";
a[1] = "b";
a[2] = "c";
定义并初始化方法二:
String[] b = new String[]{"a","b","c"};
null 是一个值,或属性不存在。undefined 声明了变量但没有赋值,或对象属性不存在。
当为属性不存在是,null==undefined 比较结果为true;
null===undefined 为 false;
Null 数据类型
在 Jscript 中数据类型 null 只有一个值:null。关键字 null 不能用作函数或变量的名称。
包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、Boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。
请注意,在 Jscript 中,null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是,Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。这点潜在的混淆是为了向下兼容。
Undefined 数据类型
如下情况使返回 undefined 值:
对象属性不存在,
声明了变量但从未赋值。
注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。在以下的代码范例中,假设程序员想测试是否已经声明变量 x :
// 这种方法不起作用
if (x == undefined)
// 作某些操作
// 这个方法同样不起作用- 必须检查
// 字符串 "undefined"
if (typeof(x) == undefined)
// 作某些操作
// 这个方法有效
if (typeof(x) == "undefined")
// 作某些操作
考虑将 undefined 值与null做比较。
someObject.prop == null;
如下情况时,比较的结果为 true,
如果属性 someObject.prop 包含 null 值,
如果属性 someObject.prop 不存在。
要检查一个对象属性是否存在,可以使用新的 in 运算符:
if ("prop" in someObject)
// someObject 有属性 'prop'
typeof(x) 返回一个用来表示表达式的数据类型的字符串。in 测试对象中是否存在该属性。
if ("prop" in someObject)
// someObject 有属性 'prop'
delete expression 从对象中删除一个属性,或从数组中删除一个元素。
expression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素。
<html>
<head><title></title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
String.prototype.trim = function()
{
// 用正则表达式将前后空格
// 用空字符串替代。
return this.replace(/(^/s*)|(/s*$)/g, "");
}
// 有空格的字符串
var s = " leading and trailing spaces ";
document.write(s + " (" + s.length + ")" );
// 删除前后空格
s = s.trim();
// 显示"leading and trailing spaces (27)"
document.write(s + " (" + s.length + ")" +"|");
var s2=" we will not get quert into the night "
document.write(s2.trim() +"|");
function pasta(grain, width, shape, hasEgg)
{
this.grain = grain;
this.width = width;
this.shape = shape;
this.hasEgg = hasEgg;
}
var spaghetti = new pasta("wheat", 0.2, "circle", true);
var linguine = new pasta("wheat", 0.3, "oval", true);
spaghetti.color = "pale straw";
linguine.color=null;
//null 和undefined 的比较
if (typeof(linguine.color) == "undefined"){
alert("linguine 的color 属性不存在,与undefined 相等!");
alert(linguine.color==null);
alert(linguine.color===null);
}
alert("color" in linguine)
alert(spaghetti.color);
alert(linguine.color);
pasta.prototype.foodgroup = "carbohydrates";
//alert(spaghetti.foodgroup);
//alert(linguine.foodgroup);
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
//alert("JScript version 4 or better");
//alert(@_win32);
@else @*/
alert("You need a more recent script engine.");
/*@end @*/
</script>