上節課我們已經了解了PRototype
的基本使用:http://blog.csdn.net/github_26672553/article/details/54375735。
本節課,我們來完成對象的繼承訓練。
var God = new GodClass({ version:’1.0’, }); 在這里我們執行alert(God.version) 請設定一個GodClass.init方法,在該方法中傳入參數,后面的任何實例對象不傳參數也有version這個屬性
var GodClass = function abc(obj){ if(this instanceof abc){ if(obj != undefined){ //把obj中的可枚舉屬性賦值給this Object.assign(this,obj); //注意:這個this,必須在你實例化GodClass之后才會產生 } }else{ alert('不要胡搞'); }}var God = new GodClass({version:'1.0'});alert(God.version); //彈出 '1.0'上面代碼是可以的。
下面我們完成作業,通過一個類似靜態函數的方式,修改GodClass
類
注意,我們給GodClass
增加了一個init
方法,該方法接收一個對象,我們把對象中的屬性賦值給了原型(prototype)上。
以后我們只需要調用一次init
方法后,后面再實例化GodClass就不必傳入參數了:
關鍵點 Function.prototype.call() 方法在使用一個指定的this值和若干個指定的參數值的前提下調用某個函數或方法
//基類var BaseNews = function () { this.display = function(){ alert('新聞基類'); };}var SportsNews = function () { BaseNews.call(this); //這樣就繼承了BaseNews類中的方法}我們使用SportsNews
類:
我們還可以通過另外的方式來擴展 除了在SportsNews中,還可以直接在Function
的原型上增加擴展,修改如下:
上面代碼可以看出,我們給Function.prototype
增加了extends
方法,此方法就是用來擴展類的。 因為增加在原型上所以SportsNews
也有該方法,我們來擴展SportsNews
:
這個時候,發現實例化后的SportsNews對象,還是有display
方法,因為extends
方法,是call了基類的原型。
新聞熱點
疑難解答