js中直接调用函数和new函数的区别

如果函数返回值为常规意义上的值类型(Number、String、Boolean)时,new函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(Object、Array、Function),则new函数与直接调用函数产生的结果等同。
举例说明:

//返回值类型
function test(){
    this.name="我是test";
    return "test";
}
var t1 = test();//直接调用函数
var t2 = new test();//new函数

alert(typeof t1);//string
alert(t1.name);//undefined

alert(typeof t2);//object
alert(t2.name);//我是test

可见直接调用返回的是“test”(即函数的返回值),而new test()产生的是一个对象,它为该函数的实例对象,并且具有name属性。

//返回一个引用类型
function test(){
    var obj = new Object();
    obj.name = "我是test";
    return obj;
}

var t1 = test();//直接调用
alert(typeof t1);//true
alert(t1.name);//我是test
var t2 = new test();//使用new
alert(typeof t2);//true
alert(t2.name);//我是test

如果函数返回一个引用类型(Object、Array、Function),则new函数与直接调用函数产生的结果等同。


参考文章:
js中new函数和直接调用的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值