具体我也不知道该怎么描述,我就举个例子吧,JS用的比较少,希望大家多多照顾:
假如有一个JS对象 var person = {name:"张三",age:20};
现在在页面中调用这个对象的时候有没有办法可以在调用person的时候直接获取出里面的name属性的值,而不是person.name才获取出来

解决方案 »

  1.   

    不行,或者你可以写个 init function, return 你想要的默认属性值。
      

  2.   

    恩,可以用person[name]调用,有没有可能通过什么方式设置后直接person就可以自动掉name的值呢
      

  3.   

    刚才理解错你的意思了,你的person 对象应该是一个 json 格式吧,之前我想在 对象中封装一个 init 方法,然后初始化对象时就调用这个 init 方法。或许你可以这样:
    var Person = {name: 'xxx', age : ''};
    function init(_p){
    return _p.name;
    }之后就了调用这个 init 方法。
      

  4.   

    呵呵谢谢楼上的提议,但是还是不适合我现在的需求,我这里原来有一处调用个JS变量的地方,是一个字符串值,现在需要把这个变量改为一个JSON对象,原来的值作为对象里的一个属性,但是又不改变原来的代码,所以想知道是否可以实现调用person的时候会默认调用person.name,或者使用别的方式达到这种效果
      

  5.   

    用person.name 或 person[name]如果你要去掉person 的话,只能自己写一个函数了
    function getPersonName(person){
      return person.name;
    }
      

  6.   

    记得以前使用过别人写的对象alert(person)出的是一个字符串值,但是alert(perison.name)也有值,当时没有注意只是觉得挺方便,现在自己要用了却想不起来以前哪里见过了。。郁闷
      

  7.   

    如果那样,那就不是面向对象了perison.name没觉得有什么不好。。
      

  8.   

    我没说perison.name这样不好啊,假如一个人站在那里,他的名字叫张三,但是我想表示提到站在那里的那个人就是张三,而不用等别人问他的名字才指明是张三,这样就不是面向对象了么?
      

  9.   

    如果只是在给string类属性赋值的时候,可以这么用<body>
        <input type="text" id="txt" value="default" />
        <div id="pnl" style="width:200px;height:200px;background:#ccc"></div>
    </body>var Person = function(name, age){
    this.name = name;
    this.age = age;
    this.toString = function(){
    return this.name;
    }
    }var p = new Person('liu', 25);
    document.getElementById('txt').value = p;
    document.getElementById('pnl').innerHTML = p;
      

  10.   

    啊!原来是加个toString()的属性,我试了确实是要这种效果,谢谢楼上的哥们啊~