1. 程式人生 > >js的學習 (對象)

js的學習 (對象)

嵌入 原型對象 prop npr val per 包括 nat set

三類JavaScript對象和兩類屬性

(1)內置對象(native object):由ECMAScript規範定義的對象或類。例如,數組,函數,日期,正則表達式。

(2)宿主對象(host object):由JavaScript解釋器所嵌入的宿主環境定義的(如Web瀏覽器)。

(3)自定義對象:自己創建的對象。

(4)自有屬性:直接在對象中定義的屬性。

(5)繼承屬性:在對象的原型對象中定義的屬性。

2.創建對象

沒有原型的對象:Object.prototype

new Object()創建的對象繼承自Object.prototype

new Array()創建的對象的原型是Array.prototype

new Date()創建的對象的原型是Date.prototype

Object.create() //第一個參數是這個對象的原型。第二個可選參數是對對象的屬性進行進一步的描述

它是一個靜態函數,而不是提供給某個對象調用的方法。

var o1 = Object.create({x:1,y:2}); //o1繼承了屬性x和y

var o2 = Object.create(null); //o2不繼承任何屬性和方法。甚至不包括基礎方法,如toString()

創建一個普通的空對象:

var o3 = Object.create(Object.prototype); //o3和{}和new Object()一樣

3.檢測屬性

in運算符。如果對象的自有屬性或繼承屬性中包含這個屬性則返回true

var o = {x:1};

"x" in o; //true

"y" in o; //false

"toString" in o; //true

對象的hasOwnProperty()用來檢測給定的名字是否是對象的自有屬性。

propertyIsEnumerable()是hasOwnProperty()的增強版,只有檢測到是自有屬性,且這個屬性的可枚舉性為true時才返回true

另一種更簡便的方法是用 !== 判斷一個屬性是否是undefined

var o = {x:1};

o.x !== undefined; //true

o.y !== undefined; //false

o.toString !== undefined; //true

屬性getter和setter

var o = {

  data_prop:value,

  get accessor_prop(){/*這裏是函數體*/},

  get accessor_prop(value){/*這裏是函數體*/}

};

}

js的學習 (對象)