JavaScript下的new操做符作了什麼?

能夠參考知乎的一篇文章:https://zhuanlan.zhihu.com/p/23987456html

參考網上其餘人的文章,new發生瞭如下操做函數

參考MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/newthis

當代碼 new Foo(...) 執行時,會發生如下事情:prototype

  1. 一個繼承自 Foo.prototype 的新對象被建立。
  2. 使用指定的參數調用構造函數 Foo ,並將 this 綁定到新建立的對象。new Foo 等同於 new Foo(),也就是沒有指定參數列表,Foo 不帶任何參數調用的狀況。
  3. 由構造函數返回的對象就是 new 表達式的結果。若是構造函數沒有顯式返回一個對象,則使用步驟1建立的對象。(通常狀況下,構造函數不返回值,可是用戶能夠選擇主動返回對象,來覆蓋正常的對象建立步驟)

參考博客園:http://www.javashuo.com/article/p-tvahjrik-ba.htmlcode

       (1) 建立一個新對象;
       (2) 將構造函數的做用域賦給新對象(所以 this 就指向了這個新對象) ;
       (3) 執行構造函數中的代碼(爲這個新對象添加屬性) ;
       (4) 返回新對象。htm

簡單總結如下:對象

       比較認同是一種語法糖的操做。作了四件事或者三件事:blog

       建立了一個新對象,而且將this指向它。而後執行構造函數的代碼。最後返回它。繼承

相關文章
相關標籤/搜索