什麼是Javascript的公有屬性/方法,私有屬性/方法,靜態屬性/方法,共享屬性/方法?
公有是指,在外部環境中可以獲取的,可以直接通過實例對象用”.”運算符操作獲得。(在構造函數中用this進行聲明)
私有是指,在外部環境中不能直接訪問,該屬性/方法只能在對象的構造函數內訪問。(聲明在構造函數裏的變量和方法,沒有用到this)
靜態是指,屬性/方法是歸屬於類的,而非實例對象。可以直接通過類名來調用得到。
共享是指,實例對象之間,共享屬性和方法,藉助向原型對象添加屬性和方法,可以實現。
(雖然都有“公共”的含義,但是可以看出靜態的和共享的之間的區別了吧)
爲什麼把方法寫在prototype中而不寫在構造函數中
參考: https://blog.csdn.net/FJ20100...
因爲寫在構造函數中更消耗內存。寫在構造函數中的話,每次用構造函數new一個對象的話,都會創建一份新的屬性和方法存到內存中。而寫在原型對象中就沒有這個問題,對於這個類,只有一個原型對象,因此寫在原型對象之下的方法也不會多次複製,永遠只有一份。
(如果寫在原型對象中,多個實例調用這個方法,會有什麼問題嗎?比如對同一個對象進行操作?)驗證方法 方法用 ==進行比較,即內存地址的比較