JavaScript基礎知識(對象、函數與對象)

來源:互聯網
上載者:User

標籤:key   原型鏈   class   bubuko   names   檢測   編寫   修改   實現   

17、對象

屬性:描述對象的資訊  方法:描述對象的行為  封裝:只關心輸入和輸出(不管過程如何?)

ü 對象的分類:

內建對象(原生對象): 就是JavaScript語言預定義的對象(如String/Number)。

宿主對象: 一般由瀏覽器環境提供實現,主要分為 BOM 和 DOM。

自訂對象: 就是由開發人員自主建立的對象。

ü 對象的建立:

  • ? 初始化器方式   

var 對象名 = {

        屬性名稱 : 屬性值 ,

        方法名 : function( ){方法體}    --- [相當於字面量定義函數的右半部分]          

     }

  • 建構函式方式

1var 對象名 = new Object( );       --- new - 關鍵字,表示建立一個新的對象

對象名.屬性名稱 = 屬性值;           --- Object - 在JavaScript中是對象的祖先

對象名.方法名 = function( ){  };

2)自訂建構函式

  • Object.create( ) 方法

(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…in迴圈:

該方法依次訪問一個對象及其原型鏈中所有可枚舉的屬性。

格式:for (var A in對象名) {               A---代表了對象的屬性名稱和方法名

          if (typeof hero[A] == ‘function‘){    區分屬性和方法 - typeof 運算子

                  hero[A]();             --- 一定是對象的方法

              } else {

                console.log(hero[A]);      --- 一定是對象的屬性

}

結果:得到指定對象的所有屬性或方法名

  • Object.keys( obj ) 方法:

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基礎知識(對象、函數與對象)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.