JS物件/繼承
js物件定義的方法:
方法一:通過var object={} 物件字面量
(1),可以叫物件直接量來自定義一個物件。物件自面量是一個表示式,這個表示式的每次運算都建立並初始化一個新物件
(2) 還可以換行寫,每義定一個屬性名和值,用逗號分開,最後一個不加逗號,加了會被忽略,但在ie中會報錯,最好不要加
方法二:通過 var obj = new Object();建立物件
1、建立一個空白的Object物件
2、給建立的物件新增屬性和方法
通過object.create來建立物件
方法三:通過建構函式來建立物件
通過instanceof操作符可以檢測一個物件是否由某個指定的構造器函式來建立的物件
注意:
使用的時候可以通過new操作符得到物件。
用構造器建立物件的時候可以接收引數
構造器函式的首首字母最好大寫,區別其他的一般函式
js繼承:
實現繼承的方式一:原型鏈
實現方法:A原型的例項是B原型的屬性
不要忘記原型鏈中預設存在Object
子類新增方法或重寫超類方法要放在替換原型語句之後
通過原型鏈實現繼承後,不能使用物件字面量的方式建立方法和屬性,因為會重寫原型鏈
通過原型鏈實現繼承後,超類的引用型別屬性會被所有例項共享
實現繼承的方式二:借用建構函式
實現方法:在子類的建構函式內呼叫超類建構函式,即使用call()或者apply(),使得超類建構函式作用域發生改變
可以給建構函式傳遞引數,但無法進行函式複用
實現繼承的方式三:組合繼承
實現方法:使用原型鏈實現對原型屬性和方法的繼承,借用建構函式實現對例項屬性的繼承
隱患:呼叫兩次父類建構函式(1call()方法,2new SuperType() )
實現繼承的方式四:原型式繼承
以一個物件為基礎,生成新物件,再對新物件進行修改
超類引用型別的屬性依然是共享的
實現繼承的方式五:寄生式繼承
建立一個僅用來實現繼承過程的函式,並在函式內部擴充套件物件,再將物件返回
此時父類的引用型別屬性依然是被所有例項共享
實現繼承的方式六:寄生組合式繼承
通過借用建構函式來繼承屬性,通過原型鏈混成來繼承方法
減少了一次父類建構函式的執行,父類引用型別的屬性不被共享