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

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();
js

------解决方案--------------------
你这个写法不用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的话相当于一个普通的函数