Object是在javascript中一個被咱們常用的類型,並且JS中的全部對象都是繼承自Object對象的。雖然說咱們平時只是簡單地使用了Object對象來存儲數據,並無使用到太多其餘功能,可是Object對象其實包含了不少頗有用的屬性和方法,尤爲是ES5增長的方法,所以,本文將從最基本的介紹開始,詳細說明了Object的經常使用方法和應用。javascript
建立對象html
首先咱們都知道,對象就是一組類似數據和功能的集合,咱們就是用它來模擬咱們現實世界中的對象的。那在Javascript中,建立對象的方式一般有兩種方式:構造函數和對象字面量。java
這種方式使用new關鍵字,接着跟上Object構造函數,再來給對象實例動態添加上不一樣的屬性。這種方式相對來講比較繁瑣,通常推薦使用對象字面量來建立對象。數組
對象字面量很好理解,使用key/value的形式直接建立對象,簡潔方便。瀏覽器
這種方式直接經過花括號將對象的屬性包起來,使用key/value的方式建立對象屬性,每一個屬性之間用逗號隔開。
注意:若是是最後一個屬性,後面就不要加逗號,由於在一些舊的瀏覽器下會報錯。函數
無論經過哪一種方式建立了對象實例後,該實例都會擁有下面的屬性和方法,下面將會一一說明。prototype
constructor屬性是保存當前對象的構造函數,前面的例子中,constructor保存的就是Object方法。htm
hasOwnProperty方法接收一個字符串參數,該參數表示屬性名稱,用來判斷該屬性是否在當前對象實例中,而不是在對象的原型鏈中。咱們來看看下面這個例子:對象
在這個例子中,首先經過定義了一個數組對象的實例arr,咱們知道數組對象實際是經過原型鏈繼承了Object對象,而後擁有本身的一些屬性,咱們經過hasOwnProperty方法判斷length是arr本身的屬性,而hasOwnProperty是在原型鏈上的屬性。
hasOwnProperty方法能夠和for..in結合起來獲取對象本身的key。blog
isPrototype方法接收一個對象,用來判斷當前對象是否在傳入的參數對象的原型鏈上,提及來有點抽象,咱們來看看代碼。
咱們知道MyObject是繼承自Object對象的,而在JS中,繼承是經過prototype來實現的,因此Object的prototype一定在MyObject對象實例的原型鏈上。
prototypeIsEnumerable用來判斷給定的屬性是否能夠被for..in語句給枚舉出來。看下面代碼:
執行這段代碼輸出字符串「name」,這就說明經過for…in語句能夠獲得obj的name這個屬性,可是咱們知道,obj的屬性還有不少,好比constructor,好比hasOwnPrototype等等,可是它們沒有被輸出,說明這些屬性不能被for…in給枚舉出來,能夠經過propertyIsEnumerable方法來獲得。
判斷「constructor」是否能夠被枚舉,輸出false說明沒法被枚舉出來。
toLocalString方法返回對象的字符串表示,和代碼的執行環境有關。
toString用來返回對象的字符串表示。
valueOf方法返回對象的原始值,多是字符串、數值或bool值等,看具體的對象。
如代碼所示,三個不一樣的對象實例調用valueOf返回不一樣的數據。
摘自:https://www.cnblogs.com/orange123/p/9948300.html