方法名後: 調用方法,立即執行,就加()
將方法作爲對象傳遞,不加()
閉包:函數使用了*不屬於自己*的*局部變量*!
閉包的問題: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 對象:不但檢測當前對象的自有屬性,而且同時檢測當前對象原型的共有屬性!
JavaScript知識點總結--6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.