日期:2014-05-16  浏览次数:20302 次

JavaScript OOP(一) -- 数据类型

typeof方法

?

返回一个用来表示表达式的数据类型的字符串:"number" "string" "boolean" "object" "function" 和 "undefined"

  • number
    ?在 Jscript 中整数和浮点值没有差别;JScript 数值可以是其中任意一种(JScript 内部将所有的数值表示为浮点值)。
    ?
    ?另外,JScript包含特殊值数字。它们是:
    ?Number.NaN
    ?表示算术表达式返回非数字值的特殊值。
    ?NaN 不与任何值相等,包括其本身。要检测值是否为 NaN,请使用 isNaN 函数。
    ?
    ?Number.MIN_VALUE
    ?返回 JScript 中能够表示的最接近零的数。约等于 2.22E-308。
    ?
    ?Number.MAX_VALUE
    ?返回 JScript 能表达的最大的数。约等于 1.79E+308。
    ?
    ?Number.NEGATIVE_INFINITY
    ?返回比 JScript 能够表示的最小负数(-Number.MAX_VALUE)更小的值。
    ?JScript 将 NEGATIVE_INFINITY 值显示为 -infinity。该值数学上的作用与负无穷相同。
    ?
    ?Number.POSITIVE_INFINITY
    ?返回比在 JScript 中能够表示的最大的数 (Number.MAX_VALUE) 更大的值。
    ?JScript 将 POSITIVE_INFINITY 值显示为 infinity。该值数学上的作用与正无穷相同。?(注:与NaN不同,Finity是相等的)
    ?
    ?两个相关方法:
    ?isNaN
    ?返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。
    ?还有一种办法,变量可以与它自身进行比较。如果比较的结果不等,那么它就是NaN。这是因为NaN是唯一与自身不等的值。
    ?
    ?isFinite
    ?返回一个 Boolean 值,指明所提供的数字是否是有限的。
    ?如果 number 不是 NaN 、负无穷或正无穷,那么 isFinite 方法将返回 true 。 如果是这三种情况,函数返回 false 。
<html>
	<head>
		<title>number test</title>
	</head>
	<body>
		<input type="button" value="typeof(0)" onclick="javascript:alert(typeof(0));"/><br>
		<input type="button" value="number.MIN_VALUE" onclick="javascript:alert(Number.MIN_VALUE);"/><br>
		<input type="button" value="number.MAX_VALUE" onclick="javascript:alert(Number.MAX_VALUE);"/><br>
		<input type="button" value="number.NEGATIVE_INFINITY" onclick="javascript:alert(Number.NEGATIVE_INFINITY);"/><br>
		<input type="button" value="number.POSITIVE_INFINITY" onclick="javascript:alert(Number.POSITIVE_INFINITY);"/><br>
		<input type="button" value="isNaN(0)" onclick="javascript:alert(isNaN(0));"/><br>
		<input type="button" value="isNaN('a')" onclick="javascript:alert(isNaN('a'));"/><br>
		<input type="button" value="isFinite(Number.NaN)" onclick="javascript:alert(isFinite(Number.NaN));"/><br>
		<input type="button" value="isFinite(Number.POSITIVE_INFINITY)" onclick="javascript:alert(isFinite(Number.POSITIVE_INFINITY));"/><br>
		<input type="button" value="isFinite(Number.NEGATIVE_INFINITY)" onclick="javascript:alert(isFinite(Number.NEGATIVE_INFINITY));"/><br>
		<input type="button" value="Number.POSITIVE_INFINITY" onclick="javascript:alert(Number.POSITIVE_INFINITY*2 == Number.POSITIVE_INFINITY);"/><br>
	</body>
</html>
  • string
    ?一个字符串值是排在一起的一串零或零以上的 Unicode 字符(字母、数字和标点符号)。字符串数据类型用来表示 JScript 中的文本。脚本中可以包含字符串文字,这些字符串文字放在一对匹配的的单引号或双引号中。字符串中可以包含双引号,该双引号两边需加单引号,也可以包含单引号,该单引号两边需加双引号。
    ?
    ?请注意,JScript 中没有表示单个字符的类型(如 C++ 的 char)。要表示 Jscript 中的单个字符,应创建一个只包含一个字符的字符串。包含零个字符("")的字符串是空(零长度)字符串。
  • function
    ?
    ?function A(){} <=> var A = function() {} (唯一区别在预编译阶段)
    ?
    ?几个重要的属性(OOP部分不包含在此)
    ?arguments
    ?arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。
    ?
    ?arguments.callee
    ?返回正被执行的Function对象,也就是所指定的Function对象的正文,仅当相关函数正在执行时才可用。
    ?
    ?caller
    ?返回一个对函数的引用,该函数调用了当前函数。
    ?对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由JScript程序的顶层调用的,那么caller包含的就是null。
<html>
	<head>
		<title>function test</title>
	</head>
	<body>
		<script language="javascript">
		<!--
		function foo1(arg) {
			foo2(arg, 'b');
		}
		
		function foo2(arg1, arg2) {
			foo3(arg1, arg2, 'c');
		}
		
		function foo3() {
			var foo = arguments.callee;
			while (foo) {
				var args = foo.arguments;
				for (var i = 0; i < args.length; i++) {
					document.write(args[i]);
				}
				foo = foo.caller;
				document.write("<br/>");
			}
		}
		
		foo1('a');
		-->	
		</script>
	</b