Object是個什麽鬼
阿新 • • 發佈:2019-03-24
一個 集合 property rip 表達 cnblogs 構造 默認 rop 這些方法,真相只有一個,他們有個‘富’粑粑或者耶耶。
引言
老人常說,在js中,一切皆對象,那對象又是什麽涅,最常用的我們都知道,對象有方法和屬性。由一些鍵值對構成的集合,然後隨便用個大括號括起來就形成了一個對象。看起來蠻簡單的,但是真是這麽簡單麽,當我們新建一個對象,為什麽會‘天生’帶有 hasOwnProperty
、 toString
這些方法呢?
追溯
這其實與JS的繼承機制有關,JS中對象是通過原型繼承的,實例對象都默默帶著一個__proto__屬性,這個屬性默認指向實例對象的原型對象,當訪問實例對象沒有的屬性或者方法時,js引擎會順著__proto__查找原型對象是否有該屬性或者方法。簡單說,就是每個兒子背後都有個強大的粑粑,當兒子想買東東而自己沒能力的時候,就會找粑粑‘啃老’,這就是為啥所有的對象都會有 toString
原型
沒錯,就是Object.prototype
了,為啥不是Object涅,敲黑板,Object是構造函數啊童靴們,不信可以在控制臺打一下看看。那麽問題又來了,Object.prototype
有什麽用,都有哪些方法呢。
- hasOwnProperty() 檢查是否存在一個給定名字的自有屬性
- valueOf() 返回一個對象的值表達
- toString() 返回一個對象的字符串表達
待續。。
參考
- JavaScript 面向對象精要 [美] Nicholas C.Zakas
- JS object(對象)的學習匯總
Object是個什麽鬼