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

函数类型的疑惑
var f1 = new function()
  {
  return "function1" ;
  }
var f2 = function()
{
  return "function2" ;

}
alert(typeof f1);//提示 object
alert(typeof f2);//提示 function

为啥提示不一样呢?求高人讲解

------解决方案--------------------
new本来的作用就是创建一个新对象。
------解决方案--------------------
第一个是定义一个函数然后对其实例化 将实例化后的对象赋值给f1
第二个其实就是定义了一个函数然后赋值给f2
看看下面的例子

JScript code
        var f1 = new function() {
            alert(this);//定义f1时就已执行 此时this指向该对象
        };
        var f2 = function(){
          alert(this);//执行f2();时才执行 this仍指向window
        };
        f2();

------解决方案--------------------
还有一点
在用构造函数实例化的时候(即new 一个对象),构造函数中的return如果返回的不是object类型,会被替换成object(这里是这个新实例化的object,即构造函数里的this)