日期:2014-05-16  浏览次数:20355 次

请教一个关于new的问题

function caller(){
  this.length=1;
  this.getLength=function(){
  return this.length;
  }
   
  return this;
}

var c = new caller(); //????

请教下上面new语句的意思:
理解1:先执行caller()函数,执行完成后返回个this对象(此时返回的this到底是啥?caller的一个实例?caller自身?),返回this对象是一个构造器,使用new去实例化这个构造器类
理解2:直接将caller作为构造器,使用new去创建caller的一个实例。
理解3:其他。

请达人解释下,困惑了许久!!



------解决方案--------------------
理解2:。。。。。。在new的函数中 允许返回一个 object 作为 new的 结果值
否者 就 将创建的 匿名的 一个object传出来 这个object 就是 在new后 this 指向的对象

所以 里面 return this 和 没有这个 句子 结果是一样的


new function a (){} ==>var o = {};return a.apply(o) || o ;