为了账号安全,请及时绑定邮箱和手机立即绑定

深入javascript中的new操作符

javascript中有一个特殊的操作符new,当我们使用这个操作符对一个函数进行操作时会返回一个对象,怎么做到的呢?下面我就帮大家解析下。

下面来具两个例子来说明: function Foo(){this.name = 'mao'; this.age = 20;} var foo = new Foo;此时我们new这个函数的时候可以加()也可以不加,为什么结果一样呢?这就涉及到javascript解释引擎了。

当javascript的解释引擎如V8,在遇到new操作符的时候会先创建一个空的对象,就上面的例子就是 var foo = {};然后采用每一个函数都有的方法apply,既是Foo.apply(foo, arguments);结果就出来了。

以为这样就完了吗?没有!我们会发现一个奇怪的现象 就是构造函数中的return。当我们return一个原始类型的时候,浏览器不会给你返回你想要返回的值。而你return的是一个对象的时候却会返回你想要返回的值,这又是怎么回事呢?这里会涉及到返回的时候一个判断,因为在你使用new操作符的时候,引擎会默认你肯定是想要获得一个对象,所以返回值就只能是个对象,如果不是对象那么他会将返回值改成return this。如果是一个对象,那么就默认通过(这就是偷渡)。所以注意你写在构造函数中的返回值。

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
9110
获赞与收藏
2572

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消