js的學習 (對象)
三類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的學習 (對象)