通常,构造函数没有返回值。它们只初始化由this值传递进来的对象,而不返回任何东西。但是,构造函数允许返回一个对象值,如果这样做,被返回的对象即成为new表达式的值。在这种情况下,this值所引用的对象就被抛弃了。对象直接量的话 dio={leng:8,weigh:9}; 那在用的过程中
return {leng:8,weigh:9}的{leng:8,weigh:9}是还算对象直接量么?对象直接量必须要完整的“dio = {leng:8,weigh:9};"  必须有一个变量dio才行么? 那dio是对象的一个引用?假如定义一个构造函数  
<script>
  function aaa(x,y){
  this.leng=x;        //这有点困惑,因为this.leng是对象的属性,那this所引 
                       用的对象又是谁呢?
   this.weigh=y;        
  
  }
var nr=new aaa(2,3);
var nr1=new aaa(4,5);
  document.write(nr.leng+"<br>");
document.write(nr.weigh+"<br>");
document.write(nr1.leng+"<br>");
document.write(nr1.weigh);
</script>//结果显示的是2,3,4,5没啥说的,但想知道this引用的对象是谁??
情况一:
<script>
  function aaa(x,y){
  this.leng=x;
  this.weigh=y;
  this.leng=9;       //这有点困惑,因为this.leng是对象的属性
  return this.leng; //这个也是返回的是一个对象的属性,那返回对象应该是??
  }
var nr=new aaa(2,3);
var nr1=new aaa(4,5);
  document.write(nr.leng+"<br>");
document.write(nr.weigh+"<br>");
document.write(nr1.leng+"<br>");
document.write(nr1.weigh);
</script>           //结果是 9,3,9,5 ; 这不是与 ”如果这样做,被返回的对象即成为new表达式的值。在这种情况下,this值所引用的对象就被抛弃了。“不是矛盾么?? this值所引用的对象是谁? 好像没有被抛弃吧。情况二:<script>
  function aaa(x,y){
  this.leng=x;
  this.weigh=y;
      return {leng:6}; // {leng:6}算是对象直接量么? 对象直接量算一个对象么? 这样返回符合那段话么?
var nr=new aaa(2,3);
var nr1=new aaa(4,5);
  document.write(nr.leng+"<br>");
document.write(nr.weigh+"<br>");
document.write(nr1.leng+"<br>");
document.write(nr1.weigh);
</script>            //结果显示 6,undefined ,6,undefined,好像this值所用引用的对象被抛弃了,但还是对this
                                值所引用的对象 感到很模糊,理解的不好。请大家帮着看看谢谢了一个是对象直接量  一般是 dio ={x:1,y:2};    但假如在没有dio时,比如返回一个对象用return {x:1,y:2};
是返回一个对象直接量还是返回一个对象。对象和对象直接量间的区别,对象的属性和对象之间量的区别,
好像对象属性也是个值,对象之间量也十个值。????????????????????????
大家用return返回一个对象时怎么用呢?return ????;

解决方案 »

  1.   

    this 有你这么用的吗?
      

  2.   

    那如何理解?” this值所引用的对象就被抛弃了“
      

  3.   

    unction   aaa(x,y)

        this.leng=x; 
        this.weigh=y; 
        this.leng=9;
        return   this.leng;

    这样的类,在 new 实例化的时候得到的对象已经不再是 aaa 的实例而是数字9这个实例了,因为你的 function 类定义里使用 return 做了跳转。这个很正常哪
      

  4.   

    我对this也不清楚,例如定义一个document.getElemnetsByName("x")[y].onfocus=function(){this.blur()}就可以用this,但如果一个普通事件就非要传一个this变量给函数,函数把this用一个变量代替才能用。搞得不太清楚。版主大大能讲讲这个this的几种情况吗?
      

  5.   

    this 的应用场景很多的,在JS里要用好this确实不太容易,一般说来 this 会对应这些:
    window
    触发事件的HTML对象
    new 出来的实现
    类里的原型
    JSON对象
      

  6.   

    - -!版主说的我还没完全消化要再努力学习JS才行,越来越喜欢JS。