JavaScript中的對象

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? JavaScript中的對象

? ? ? ? ?面向對象(Object-Oriented,OO)的語言有一個標志,那就是他們都沒有類的概念,而通過類可以創(chuàng)建任意多個具有相同屬性和方法的對象。

? ? ? ? ?ECMA-262把對象定義為:“無序屬性的集合,其屬性可以包括基本值、對象或者函數(shù)”

? ? ? ? ?創(chuàng)建自定義對象的最簡單方式就是創(chuàng)建一個Object的實例,然后再為它添加屬性和方法。如下:

var person=new object();

person.name="xiaoming";

person.age=29;

person.job="Software Engineer";

person.sayName=function(){

? ? ? ? ? ? ? ?alert(this.name);

}

上面的例子中創(chuàng)建了一個名為person的對象,并為它吸納三個屬性(name、age和job)和一個方法(sayName())。sayName()方法用于顯示this.name的值。早期的JavaScript的開發(fā)人員經常使用這個模式創(chuàng)建新對象。幾年后,對象字面量成為創(chuàng)建對象的首選模式,如下:

var person={

? ? ? ? ? name"xiaoming:",

? ? ? ? ? age:29,

? ? ? ? ? job:"SoftwareEngineer",


sayName:function(){

? ? ? ? ? ? ? ?alert(this.name);

? ? ? }

}


? ? ? ? ?//JavaScript的對象是一種無序的集合數(shù)據(jù)類型,它由若干鍵值對組成。//

? ? ? ? ?JavaScript的對象用于描述現(xiàn)實世界中的某個對象。

? ? ? ? ?JavaScript用一個{...}表示一個對象,鍵值對以xxx: xxx形式申明,用,隔開。注意,最后一個鍵值對不需要在末尾加,,如果加了,有的瀏覽器(如低版本的IE)將報錯。

? ? ? ? ?實際上JavaScript對象的所有屬性都是字符串,不過屬性對應的值可以是任意數(shù)據(jù)類型。

? ? ? ? ? 如果訪問一個不存在的屬性會返回什么呢?JavaScript規(guī)定,訪問不存在的屬性不報錯,而是返回undefined:

? ? ? ? ? 由于JavaScript的對象是動態(tài)類型,你可以自由地給一個對象添加或刪除屬性:

var xiaoming = { name:'小明'};

xiaoming.age;// undefined

xiaoming.age =18;// 新增一個age屬性

xiaoming.age;// 18

deletexiaoming.age;// 刪除age屬性

xiaoming.age;// undefineddelete

xiaoming['name'];// 刪除name屬性

xiaoming.name;// undefined

deletexiaoming.school;// 刪除一個不存在的school屬性也不會報錯

如果我們要檢測xiaoming是否擁有某一屬性,可以用in操作符:

'name'inxiaoming;//true?

'grade'inxiaoming;//false

in判斷一個屬性存在,這個屬性不一定是xiaoming的,它可能是xiaoming繼承得到的:

'toString'inxiaoming;//true

? ? ? ? 因為toString定義在object對象中,而所有對象最終都會在原型鏈上指向object,所以xiaoming也擁有toString屬性。

? ? ? ? 要判斷一個屬性是否是xiaoming自身擁有的,而不是繼承得到的,可以用hasOwnProperty()方法:

var xiaoming = {name:'小明'};xiaoming.hasOwnProperty('name');//true

xiaoming.hasOwnProperty('toString');//false

? ? ? ? ?無論該屬性存在于實例中還是在原型中。同時使用hasOwnProperty()方法和in操作符,就可以確定該屬性到底是存在于對象中,還是存在于原型中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容