1. 程式人生 > >Object是個什麽鬼

Object是個什麽鬼

一個 集合 property rip 表達 cnblogs 構造 默認 rop

引言

老人常說,在js中,一切皆對象,那對象又是什麽涅,最常用的我們都知道,對象有方法和屬性。由一些鍵值對構成的集合,然後隨便用個大括號括起來就形成了一個對象。看起來蠻簡單的,但是真是這麽簡單麽,當我們新建一個對象,為什麽會‘天生’帶有 hasOwnPropertytoString 這些方法呢?

追溯

這其實與JS的繼承機制有關,JS中對象是通過原型繼承的,實例對象都默默帶著一個__proto__屬性,這個屬性默認指向實例對象的原型對象,當訪問實例對象沒有的屬性或者方法時,js引擎會順著__proto__查找原型對象是否有該屬性或者方法。簡單說,就是每個兒子背後都有個強大的粑粑,當兒子想買東東而自己沒能力的時候,就會找粑粑‘啃老’,這就是為啥所有的對象都會有 toString

這些方法,真相只有一個,他們有個‘富’粑粑或者耶耶。

原型

沒錯,就是Object.prototype了,為啥不是Object涅,敲黑板,Object是構造函數啊童靴們,不信可以在控制臺打一下看看。那麽問題又來了,Object.prototype有什麽用,都有哪些方法呢。

  1. hasOwnProperty() 檢查是否存在一個給定名字的自有屬性
  2. valueOf() 返回一個對象的值表達
  3. toString() 返回一個對象的字符串表達

待續。。

參考

  • JavaScript 面向對象精要 [美] Nicholas C.Zakas
  • JS object(對象)的學習匯總

Object是個什麽鬼