JS中的公有、私有、靜態、共享屬性和方法

什麼是Javascript的公有屬性/方法,私有屬性/方法,靜態屬性/方法,共享屬性/方法?

公有是指,在外部環境中能夠獲取的,能夠直接經過實例對象用」.」運算符操做得到。(在構造函數中用this進行聲明)函數

私有是指,在外部環境中不能直接訪問,該屬性/方法只能在對象的構造函數內訪問。(聲明在構造函數裏的變量和方法,沒有用到this)this

靜態是指,屬性/方法是歸屬於類的,而非實例對象。能夠直接經過類名來調用獲得。.net

共享是指,實例對象之間,共享屬性和方法,藉助向原型對象添加屬性和方法,能夠實現。prototype

(雖然都有「公共」的含義,可是能夠看出靜態的和共享的之間的區別了吧)對象

爲何把方法寫在prototype中而不寫在構造函數中

參考: https://blog.csdn.net/FJ20100...
由於寫在構造函數中更消耗內存。寫在構造函數中的話,每次用構造函數new一個對象的話,都會建立一份新的屬性和方法存到內存中。而寫在原型對象中就沒有這個問題,對於這個類,只有一個原型對象,所以寫在原型對象之下的方法也不會屢次複製,永遠只有一份。
(若是寫在原型對象中,多個實例調用這個方法,會有什麼問題嗎?好比對同一個對象進行操做?)驗證方法 方法用 ==進行比較,即內存地址的比較blog

相關文章
相關標籤/搜索