一下用物件導向的相關概念來解釋js中的仿物件導向,因為js中不像其他語言,不存在物件導向語言的相關特性,但可以通過一些技巧來模仿物件導向。我用同樣的概念來概述js的這些方仿物件導向的概念,因為他們的行為作用類似。
在js中有如下函式
1function test
()
其中,var_value是靜態成員,this_value是動態成員。
靜態成員是關聯到類本身的,只能在類的層次進行呼叫。這種特性是在例項化物件中var_value在記憶體中只保留乙份,不會占用太多的記憶體。但他也有缺點,如果在繼承方面上派生會有問題,無法派生。所以如果要派生子類,不宜採用此方法。
動態成員,這關聯到物件上。這種做法是叫做門戶大開型。在每乙個該類的物件中在記憶體都存在乙份屬性和方法的副本,也就是說,例項化多少個物件,就有多少個記憶體副本。這在效率上來說不是件好事,但其實用可行性是比較高的。雖說記憶體占用多,不過也可以通過一些技巧來盡量的減少帶來的記憶體開銷。
暫時就講這麼多,也許有空空乏。不過在往後的隨筆中會結合更多的例子,做更深層次剖析。
簡單來說就是如何處理資訊。隱藏是目的,封裝是達到目的用的技術。封裝可以被定義為對物件內部的資料表現形式和實現細節進行隱藏。上面說到的成員問題也是資訊處理的途徑,這裡是如何用這些成員來封裝,當然,還有用到其他東西。
封裝的優點是:保持了內部資料的完整性和邏輯性,它對變數實施了限制和約束。弱化模組間耦合。
缺點是:封裝後的js**有大部分是複雜的,因為js實現封裝本身就比較難,不像其他語言。這也是js靈活的雙刃劍。封裝後的**除錯起來也比較困難,這需要更分鐘的作用域打交道,也依靠強大的除錯工具。假如程式用的是一種設計模式,如果對於乙個不熟悉某種模式的程式設計師是會覺得難以理解的。這就需要借助良好的**注釋或說明文件了。
靜態成員和非靜態成員
類中的成員要麼是靜態的要麼是非靜態的。一般來說,靜態成員都歸屬於類所有,使用 static 關鍵字來宣告,不能在類的例項中訪問靜態成員 非靜態成員屬於類的例項 物件所有,不能按照類訪問靜態成員來訪問。下面用乙個例項來幫助理解 using system using system.collections...
靜態成員和非靜態成員
靜態成員和非靜態成員 1.含義 在c de 成員變數被宣告為static 稱為靜態成員變數 在類被例項化時建立,通過類進行訪問,意味著它為該類的所有例項所共享,當某個類的例項修改了該靜態成員變數,其修改值為該類的其它所有例項所見,也就是說乙個類的所有例項的同一靜態變數都是同乙個值。不帶有 stati...
靜態成員和非靜態成員的區別
靜態成員和非靜態成員的區別?答 靜態變數使用 static 修飾符進行宣告,在類被例項化時建立,通過類進行訪問不帶有 static 修飾符宣告的變數稱做非靜態變數,在物件被例項化時建立,通過物件進行訪問乙個類的所有例項的同一靜態變數都是同乙個值,同乙個類的不同例項的同一非靜態變數可以是不同的值。靜態...