解决方案 »

  1.   

    因为你第一句是function Person(){},已经结束了,
    所以下面的代码可能在全局context中,也就是说你以为
    alert(JSON.stringify(name));
    是输出的上面的var name
    但实际上可能输出的是window.name,
    再查查代码把,看看同一环境里面有没有定义name,或者隐含的name
      

  2.   

    没有   不过应该是输出了window.name
      

  3.   

    你的那个name 是一个对象.value名字就出来了
      

  4.   

     "nickName":
                {
                    value:"Tom",
                    writable:true
                }
    nickName 被作为一个对象创建,而不是一个字段
      

  5.   

     var per = {
    nickName:'Tom',
    age:23
    };
         为何不直接这样写
      

  6.   

    好问题啊
    经过 简单的 检查测试window.name 是窗口的名称 是于一个 属性成员
    注意属性成员 一般是重新 定义   = 操作符号的
    也就是 可能是这样定义 
    window.name { 
         _name =  ''; 
         set:function(val){
             _name = val.toString();
          }
         get:function(){
            return _name;
        }
    }