var aa="aa";
alert(typeof aa); //输出string
alert(aa instanceof String); //输出flase
alert(aa.charAt(0)); //输出a
“alert(aa instanceof String)”语句为什么会输出false?请详细说明!

解决方案 »

  1.   

     var aa = new String('aaaa');///==========
     alert(typeof aa); 
     alert(aa instanceof String); 
     alert(aa.charAt(0));
      

  2.   

    参考
    typeof、instanceof、constructor与对象类型
    javascript中instanceof和类
      

  3.   

    instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。例如:var oStringObject = new String("hello world");
    alert(oStringObject instanceof String); //输出 "true"这段代码问的是“变量 oStringObject 是否为 String 对象的实例?”oStringObject 的确是 String 对象的实例,因此结果是 "true"。尽管不像 typeof 方法那样灵活,但是在 typeof 方法返回 "object" 的情况下,instanceof 方法还是很有用的。
      

  4.   


    var aa="aa"; //这句代码和var aa = new String('aaaa');不是一样的作用吗?都会创建一个String类型的变量吗?
      

  5.   

    var aa="aa"; //这句代码和var aa = new String('aaaa');不是一样的作用吗?都会创建一个String类型的变量吗?
     不一样,不new的话,他默认是基本类型,new是对象!
      

  6.   


    那如果不new,为什么该变量可以调用String对象的方法呢?如charAt()方法。
      

  7.   


    var aa="aa" //创建了一个变量,赋值了一个字符串。
    var aa = new String('aaaa');//创建了一个String对象,aa引用了该对象
    我是这么理解的
      

  8.   

    String () 构造函数 public function String(val:String)运行时版本:  AIR 1.0, Flash Player 9 
    创建已初始化为指定字符串的新 String 对象。 注意:由于字符串文本比 String 对象需要的开销少且通常更易于使用,所以,除非有充分的理由要使用 String 对象而不是字符串文本,否则应该使用字符串文本而不是 String 类。 
    参数  val:String — 新 String 对象的初始值。 
     
      

  9.   

    你说的对,他可以调用String对象的方法,但是只是当他调用的瞬间,自动转换成String对象的,完了后又自动转回来了,这个过程是自动的