JS中new的運行方式

來源:互聯網
上載者:User

標籤:str   狀態   建立   ons   image   nbsp   常用   改變   原型   

在JS中,有兩個基礎原型,分別是Function.prototype和Object.prototype。這兩個原型組成了JS中的所有執行個體他們的關係是 Function.prototype ----> Object.prototype ----> null。

常用的建立類的有兩種方法,我們從這兩種方法講兩種prototype的關係。

第一種是先有一個原型,直接令新的對象的__proto__指向已經有的原型。這種時候可以類比繼承關係,但區別是把那個原型的狀態(如屬性的取值等)也一併繼承過來了。

但是記住這個時候新的對象從原型繼承的值如果沒有被初始化/賦值,原型中的值改變的話,新的對象中的對應值也會改變。

第二種是使用new來繼承,new在JS裡這樣運行:

1.建立一個最基礎的Object對象(內容為空白 )並且初始化。

2.把後面的建構函式放進剛建立的obj中,並且設定__proto__為函數的對象。

3.使用建立出的對象作為obj,在obj中執行那個函數,,當然那個函數要對剛建立的這個對象進行初始化,然後返回。

4.如果返回的是Object對象,new就返回這個對象,否則返回剛建立的obj。

這裡解釋一下函數的原型類型:

比如說有 

function A(){ var a = 1;};

那麼A是一個Object,他的constructor就是A(),平時調用A()就相當於調用A這個Object的建構函式。

 

PS:prototype屬性是該對象作為proto的時候的類型。__proto__是指向本對象的原型對象的指標。

 

 

 

 

JS中new的運行方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.