亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

深入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前端工程師
手記
粉絲
9109
獲贊與收藏
2572

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消