JavaScript知識點總結--6

方法名後:     調用方法,立即執行,就加()

           將方法作爲對象傳遞,不加()

 

閉包:函數使用了*不屬於自己*的*局部變量*!

 


閉包的問題:1.       普通方法調用完,活動對象回收!

                   閉包方法導致父方法活動對象不釋放

                    閉包方法佔用更多內存空間

重新獲得閉包,閉包內的局部變量都重置

2.         閉包中多個方法,訪問的是同一個局部變量!

                          只要變量變化,所有方法都受影響!

 

對象:自定義對象!

面向過程:以任務的實行步驟爲編程順序。

    方法:封裝並重用複雜任務的方式

問題:功能和功能操作的數據,分離!

面向對象:在設計過程中,一切以描述一個對象爲基本原則

什麼對象:封裝現實中一個事物的屬性和功能的結構

對象中包含:屬性和功能(方法)!

 

js中的對象:其實就是關聯數組!

 

 

創建自定義對象:3種

直接量:var obj={屬性名:屬性值,...}

訪問屬性?obj.屬性名

可能不存在的屬性,使用之前,必須先判斷存在,再使用:

判斷任意對象是否包含屬性:

if(obj.hasOwnProperty("屬性名"))

如果包含返回true,否則返回false

判斷內置對象,瀏覽器對象兼容性:

if(obj.屬性名)-->undefined,null,0,"",NaN都是false

其餘都是true

 

自定義對象創建的依據?需求中的名詞!

需求中的動詞:對象的功能/方法

對象的屬性?表,證,單,據

 

對象中的方法:對象中的功能。

如何定義:var obj={

           方法名:function(){方法體}

        }

方法其實就是一個對象!

對象中的方法本質上就是一個特殊的屬性!

對象中的方法是操作數據的功能

 

對象自己的方法,如何訪問自己的屬性:this指代當前對象

什麼是this? 棧中一個指針,永遠指向當前正在操作的對象!

 

面向對象三大特點:封裝,繼承,多態

封裝?將數據和對數據的操作,包裝爲一個整體,過程就叫封裝。

繼承:使用現有類型,創建出新的類型。新類型中可以使用現有類型的屬性和功能!並且新類型可以擴展出現有類型沒有的屬性和功能!

 

所有對象的父類型,Object:toString()

    hasOwnProperty()

 

對象模板/構造函數:專門用來反覆創建相同結構的對象的專門方法

如何定義構造函數:function 類型名(屬性值參數...){

                   this.屬性名=屬性值;

                  this.方法名=function(){

                       方法體;

                   }

               }

new構造函數():

new:開空間

構造函數:劃分空間結構;初始化內部屬性的值

 

重寫:如果子類型認爲父類型的方法不好用!可以重新定義和父類型完全同名的方法!實現覆蓋!

默認toString方法如果無法打印內容,默認打印的是對象類型

一般自定義類型對象,都會重寫toString方法!

 

原型prototype:構造函數背後,專門保存由構造函數創建出的對象共有的數據。

 

自有屬性:只給一個對象定義的屬性,僅屬於當前對象。

其他對象不能共享。

共有屬性:保存在原型中,由所有同類型對象共享的屬性

   設置/讀取:構造函數.prototype.共有屬性名

 

刪除屬性定義:delete 對象[.prototype].屬性名;

 

hasOwnProperty:僅檢測當前對象的自有屬性!

屬性 in 對象:不但檢測當前對象的自有屬性,而且同時檢測當前對象原型的共有屬性!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章