標籤:key 原型鏈 class bubuko names 檢測 編寫 修改 實現
17、對象
屬性:描述對象的資訊 方法:描述對象的行為 封裝:只關心輸入和輸出(不管過程如何?)
ü 對象的分類:
內建對象(原生對象): 就是JavaScript語言預定義的對象(如String/Number)。
宿主對象: 一般由瀏覽器環境提供實現,主要分為 BOM 和 DOM。
自訂對象: 就是由開發人員自主建立的對象。
ü 對象的建立:
var 對象名 = {
屬性名稱 : 屬性值 ,
方法名 : function( ){方法體} --- [相當於字面量定義函數的右半部分]
}
(1)var 對象名 = new Object( ); --- new - 關鍵字,表示建立一個新的對象
對象名.屬性名稱 = 屬性值; --- Object - 在JavaScript中是對象的祖先
對象名.方法名 = function( ){ };
(2)自訂建構函式
(1) 必須提前存在一個對象hero1
eg: var hero2 = Object.create(hero1); ---建立的新對象具有與傳遞的對象相同的屬性和方法
(1) 建立一個Null 物件
eg: var對象名= Object.create(null); hero4.name = ‘zhaomin‘;
u 使用對象
方法一 方法二
console.log(對象名.屬性名稱); console.log(對象名[‘屬性名稱‘] );
對象名.方法名( ); 對象名[‘方法名‘]( );
[註:不適用於複雜的命名方式] [註:適用於複雜的命名方式] [用法更通用]
eg: content-type: number ---編寫錯誤
‘content-type’: number; console.log(hero.content-type); ---輸出報錯
將"-"解析為減法運算子; hero.content -屬性擷取失敗; type - 不是一個變數
console.log(hero[‘content-type‘]); ---正確
附:window對象
* 是BOM中的對象,表示當前瀏覽器的視窗; 也是瀏覽器環境中最頂級的對象(全域對象)
* 定義的全域變數和全域函數,為window對象添加的屬性和方法
eg: var name = ‘zhao min‘;
var sayMe = function ( ) {
console.log(‘my name is zhaomin‘);
}
console.log(window.name);
window.sayMe( );
u 操作對象的屬性和方法
2 新增對象
對象名.新的屬性名稱 = 屬性值; 對象名.新的方法名 = function( ){ };
2 修改對象
對象名.原有屬性名稱 = 新的屬性值; 對象名.原有方法名 = function( ){ };
2 刪除對象
delete 對象名.屬性名稱 delete 對象名.方法名
u 遍曆(枚舉)對象
只知道對象名,但不清楚屬性和方法名 typeof 或instanceof;
該方法依次訪問一個對象及其原型鏈中所有可枚舉的屬性。
格式:for (var A in對象名) { A---代表了對象的屬性名稱和方法名
if (typeof hero[A] == ‘function‘){ 區分屬性和方法 - typeof 運算子
hero[A](); --- 一定是對象的方法
} else {
console.log(hero[A]); --- 一定是對象的屬性
}
結果:得到指定對象的所有屬性或方法名
obj ---表示遍曆的當前對象 傳回值: 一個包含當前對象所有屬性名稱和方法名的數組 eg: var a = Object.keys(hero); console.log(a); // ["name", "age", "sayMe"]
- Object.getOwnPropertyNames( object ) 方法:
該方法同上。
u 檢測對象的屬性或方法(即檢測對象中是否存在指定屬性:)
*使用 in 關鍵字 console.log( ‘name‘ in fn );
使用 Object對象的 hasOwnProperty()方法 console.log( fn.hasOwnProperty( ‘name‘ ));
使用 undefined 進行判斷 console.log( fn.name = = = undefined );
使用 if 語句進行判斷。 if( fn.name ){
console.log( ‘name屬性存在‘ );
}
註:調用對象不存在的的屬性 ---undefined
調用對象不存在的的方法 ---輸出報錯 is not a function
18、函數與對象
JavaScript基礎知識(對象、函數與對象)