//---------------------------------------------------------
// 内置对象实例的constructor属性
//---------------------------------------------------------
var _object_types = {
  'function'  : Function,
  'boolean'   : Boolean,
  'regexp'    : RegExp,
// 'math'     : Math,
// 'debug'    : Debug,
// 'image'    : Image;
// 'undef'    : undefined,
// 'dom'      : undefined,
// 'activex'  : undefined,
  'vbarray'   : VBArray,
  'array'     : Array,
  'string'    : String,
  'date'      : Date,
  'error'     : Error,
  'enumerator': Enumerator,
  'number'    : Number,
  'object'    : Object
}function objectTypes(obj) {
  if (typeof obj !== 'object') return typeof obj;
  if (obj === null) return 'null';  for (var i in _object_types) {
    if (obj.constructor===_object_types[i]) return i;
  }
  return 'unknow';
}// 测试数据和相关代码
function MyObject() {
}
function MyObject2() {
}
MyObject2.prototype = new MyObject();window.execScript(''+
'Function CreateVBArray()' +
'  Dim a(2, 2)' +
'  CreateVBArray = a' +
'End Function', 'VBScript');document.writeln('<div id=dom style="display:none">dom<', '/div>');// 测试代码
var ax = new ActiveXObject("Microsoft.XMLHTTP");
var dom = document.getElementById('dom');
var vba = new VBArray(CreateVBArray());
var obj = new MyObject();
var obj2 = new MyObject2();document.writeln(objectTypes(vba), '<br>');
document.writeln(objectTypes(ax), '<br>');
document.writeln(objectTypes(obj), '<br>');
document.writeln(objectTypes(obj2), '<br>');
document.writeln(objectTypes(dom), '<br>');-----
键值对?

解决方案 »

  1.   

    Object是对象...对象是复杂数据的集合
    1,2,3,4是基本类型数据......是数据的底层形态
    Number是对象...这个对象所处理和表现的数据的都是1,2,3,4等基本数据对象可以包含基本类型数据和其他对象猫对象:
    var cat={'legs':4};  1只猫4条腿                  
    //4就是基本数值类型房子对象:
    var house={1:cat,2:100000};  这只猫在一个房子里,房子价值100000$
    //猫是对象(复合数据),价钱又是基本数据类型Number也是对象.与基本类型数值的不同是var num=10;
    就是个数值10;
    你无法对这个10进行什么复杂处理,除了++ --var n=new Number(10);
    是个对象10;
    Number.prototype.getMoney=function(){return x+'$';}  //可以自己写个东西来处理n
    n.toFixed();    //也可以用Number对象自己的东西来处理nn.getMoney();   //得到了"10$"如果用 num.getMoney() 会出现问题(如果Javascript不能自动把数字num变成对象n)
      

  2.   

    我现在理解:
    基本数据类型(number...)与构造函数对象(Number...)构成无序键值对列表,为对象而对象的创建与基本数据类型无关,只与构造函数对象的原型有关.对象就是原型的一个副本而对与原型的改变不影响基本数据类型也不影响构造函数对象.只会影响到副本.而查看某对象属于那个基本数据类型可以用typeof(obj)
    查看某对象属于是那个构造函数对象可以用 obj instanceof Number 之类的..貌似扯的很远,理解有不当的地方还望指出..
      

  3.   

    test