通常,构造函数没有返回值。它们只初始化由this值传递进来的对象,而不返回任何东西。但是,构造函数允许返回一个对象值,如果这样做,被返回的对象即成为new表达式的值。在这种情况下,this值所引用的对象就被抛弃了。自己始终理解不了,希望大家多多指教。
<script>
function ss(x,y){
this.w=x;
this.g=y;
  return ??          //假如这要用return返回一个对象值怎么弄?
}
var hs = new ss( ???) ;//这真搞晕了,如何才能做到 “被返回的对象即成  
                         为new表达式的值”
alert(???);//如何表示即显示this值所引用的对象就被抛弃????
请大家给提供的范例理解下,谢谢大家了

解决方案 »

  1.   

    <script>
    function ss()
    {
    this.a='a';
    this.b='b';
    return{
    a:'a1',
    b:'b1'
    }
    }
    var o = new ss();
    alert(o.a);//will alert 'a1' not 'a'
    </script>
      

  2.   

    谢谢 foolbirdflyfirst,看了你写的例子,懂了些了。
    还有 return{
    a:'a1', //a: 标签的话这点不理解,不知道啥意思.
    b:'b1'  //b: 标签的话这点不理解,不知道啥意思.
    }
    好像多在swith里多用case:
    这里如何理解?
      

  3.   

    js中:
    ============================
    var obj = new Object();
    obj.a = 'a1';
    obj.b = 'b1';与var obj={
    a:'a1',
    b:'b1'
    }
    是等价的。
      

  4.   

    <script>
    function ss()
    {
    this.a='a';
    this.b='b';
    k={a:'c'};   //这有点疑问,k={a:'c'}是对象直接量,但返回this.a的话,结果差别就很大!
    return k;}
    var o = new ss();
    alert(o.a);//will alert 'a1' not 'a'
    alert(o.b);
    </script>  //结果显示为 c  undefine和那段概念一样。-----this值所引用的对象就被抛弃了如果是这样的返回
    <script>
    function ss()
    {
    this.a='a';
    this.b='b';
    this.a='c';return this.a;}
    var o = new ss();
    alert(o.a);//will alert 'a1' not 'a'
    alert(o.b);
    </script>  //结果为c ,b ----- this值所引用的对象没有被抛弃了呀
    还有经常说的对象直接量和this.a(那this.a算对象值么?还是?this.a应该是对象属性值么?)
    对象直接量像 o={a:'c'};这类的,可以被称为对象值么? 那this.a='c'或o.a='c'的'c'值算对象值? this.a算对象的属性吧。。看了好多书还是概念不轻呀。请大家帮着给分析下,谢谢了