下面两种写法的区别
var obj=function(){
this.myName="seve";
return {//这样写下面new的时候会报错
alert(1);
}
}
var obj=function(){
this.myName="seve";
//这样为什么却能弹出2和object
return alert(2);
}
var ob=new obj();
alert(ob);
因为你的第一个写法有两个问题:
语法问题,对象定义的时候,每个成员之间,不能使用
;
,必须使用,
定义的时候,如果是对象,其成员必须有索引,
{false, null}
,是不行的,格式必须是:{bol: false, nil: null}
所以,改成如下则可以成功运行:
var obj = function() {
this.myName = "seve";
return { //这样写下面new的时候会报错
alert: alert(1)
}
}
当然会报错了……对象字面量里直接函数调用,谁教你这么写的呢?
// 你 return 的是这么个东西,这语法不报错才见鬼了
{
alert(1)
}
下面的写法是正确的,因为:
首先
alert(2)
调用了,于是你看到了第一个2
alert(2)
的返回值是undefined
,当构造函数最终返回的不是一个对象时,new
操作符会创建一个对象取代之,因此var ob = new obj()
还是会得到一个对象实例alert(ob)
调用,于是你看到了[object Object]