3.1 typeof和constructor总结
下面都对变量test的值进行说明。有一点可以先说明的是,typeof的值始终只有这样几个:“number”、“string”、“Boolean”、“object”、“function”和“undefined”、“unknown”。
注意,typeof为“unknown”的情况特别罕见,在微软的文档中几乎没有提到,笔者也是在“typeof TdcObj.recordset.recordcount”的时候才发现这个特例的。
而对象的constructor属性值则视情况而论,详细请见表3-2。
表3-2 typeof和constructor的比较
|
变 量 |
typeof返回的都是String串 |
constructor返回的是对象 |
其他说明 |
|
// 这里省略了( ) var test = new Object; // 上面等同于 var test = {}; |
object |
Object |
任何自定义对象(Object)的typeof都是object |
|
var test = new Array(123,456); // 上面等同于 var test = [123,456]; |
object |
Array |
|
|
var test = function(){}; // 上面等同于 var test = new Function(); |
Function |
Function |
但是请注意,如果是 var oT = new test(); 则typeof oT等于object |
|
function fnMyTest(){} // 这里省略了() var test = new fnMyTest; |
object |
fnMyTest |
要特别注意的是,自定义函数的constructor等于这个定义的函数对象,又,例如: (new Date).constructor等于Date,它的typeof等于object |
|
var test = null; |
object |
发生错误,无法获取constructor,虽然它的tyepof是“object”,这就是它的特殊性 |
这种情况是非常特殊的,读者朋友要特别小心。在程序运行过程中常常会发生这样的情况的,在你并不知道已经为null的情况下却还在求test.constructor的内容 |
|
var test = undefined; |
undefined |
同null一样,会发生错误,因为它不是一个有效的变量或对象 |
|
|
var test = 9897; |
number |
Number |
|
|
var test = “My Test String”; |
string |
String |
|
| 回书目 上一节 下一节 |