天天看點

JavaScript學習總結(十一)——Object類詳解

  Object類是所有JavaScript類的基類(父類),提供了一種建立自定義對象的簡單方式,不再需要程式員定義構造函數。

  1.constructor:對象的構造函數。

  2.prototype:獲得類的prototype對象,static性質。

  1.hasOwnProperty(propertyName)

  判斷對象是否有某個特定的屬性。必須用字元串指定該屬性,例如,obj.hasOwnProperty("name"),傳回布爾值。此方法無法檢查該對象的原型鍊中是否具有該屬性;該屬性必須是對象本身的一個成員。

運作結果:

  

  hasOwnProperty的用法不僅僅在此,在Jquery中在編寫插件中,少不了的一步,就是初始化參數,其中一個很重要的方法就是$.extend();他的原理就是應用了hasOwnProperty()方法;利用for

in

循環周遊對象成員中,有沒有相同名稱的對象成員,有的話就用這個新的對象成員替換掉舊的,通過這種方式,我們就可以通過修改方法中的參數變化,進而控制程式的流程,而對于那些沒有改變的部分,仍使用預設值進行控制,我們自己也可以簡單的模拟一下這個extend函數,如下

  2.isPrototypeOf(object)

  判斷該對象是否為另一個對象的原型。

  obj1.isPrototypeOf(obj2);

  obj1是 一個對象的執行個體;obj2是另一個将要檢查其原型鍊的對象。原型鍊可以用來在同一個對象類型的不同執行個體之間共享功能。如果obj2的原型鍊中包含

obj1,那麼isPrototypeOf 方法傳回 true。如果obj2不是一個對象或者obj1沒有出現在obj2中的原型鍊中,isPrototypeOf

方法将傳回 false。

  3.propertyIsEnumerable(propertyName)

  通過這個方法我們可以檢測出這個對象成員是否是可周遊的,如果是可周遊出來的,證明這個對象就是可以利用for in 循環進行周遊的,

  格式如下:obj.propertyIsEnumerable(propertyName)

  如果 propertyName存在于 obj中且可以使用一個 For…In 循環窮舉出來,那麼

propertyIsEnumerable 屬性傳回 true。如果 object 不具有所指定的屬性或者所指定的屬性不是可列舉的,那麼

propertyIsEnumerable 屬性傳回 false。典型地,預定義的屬性不是可列舉的,而使用者定義的屬性總是可列舉的。

  4.toString():傳回對象對應的字元串

  5.valueOf():傳回對象對應的原始類型

  以上5個方法都是Object.prototype上定義的,ECMAScript

中的所有對象都由Object繼承而來,是以在ECMAScript上的所有對象都具有以幾個方法

測試代碼1:

測試代碼2: