js中,为什么要先new一下对象,才能调用
本帖最后由 zqz49877 于 2013-09-21 15:48:11 编辑
function obs() {
var a= 1;
return {
t1:function() {
alert(a);
}
}
}
var a = new obs();
a.t1();
如题,为什么不能直接obs();
------解决方案--------------------你这个写法不用new也行。。
var a = obs();
a.t1();
------解决方案--------------------你new的不是对象,是构造函数,new + 构造函数生成对象。
如果单就调用方法而言,确实不必用new。
new一般用在“js使用原型和this关键字实现面向对象”的过程中。
------解决方案--------------------function obs() {
var a= 1;
return {
t1:function() {
alert(a);
}
}
}
var a = new obs();
alert(a instanceof obs);
alert返回false,说明a不是obs实例,即不需用new
------解决方案--------------------new 表示调用构造函数创建了一个对象,不new的话相当于一个普通的函数