函数类型的疑惑
var f1 = new function()
{
return "function1" ;
}
var f2 = function()
{
return "function2" ;
}
alert(typeof f1);//提示 object
alert(typeof f2);//提示 function
为啥提示不一样呢?求高人讲解
[解决办法]
new本来的作用就是创建一个新对象。
[解决办法]
第一个是定义一个函数然后对其实例化 将实例化后的对象赋值给f1
第二个其实就是定义了一个函数然后赋值给f2
看看下面的例子
var f1 = new function() { alert(this);//定义f1时就已执行 此时this指向该对象 }; var f2 = function(){ alert(this);//执行f2();时才执行 this仍指向window }; f2();
[解决办法]
还有一点
在用构造函数实例化的时候(即new 一个对象),构造函数中的return如果返回的不是object类型,会被替换成object(这里是这个新实例化的object,即构造函数里的this)