function
person()
;var boy =
newperson()
;//錯誤
當建立函式在改寫原型前時,例項的this指標指向的是改寫之前的原型,而不是改寫後的原型
因此在此處,boy.sayhi()的指標並沒有指向改寫後的原型
正確做法是先改寫原型,再建立例項
person.prototype=
}var boy =
newperson()
;//正確
boy.
sayhi()
;
深入理解,如果再構造乙個函式firstwife(),使得她的原型是person函式的例項,
她的原型的建構函式是她(繼承),再建立乙個firstwife例項grandson,然後對firstwife
的原型進行重寫,包含name屬性和sayhi方法。最後呼叫grandson.sayhi()如下面**
function
firstwife()
;firstwife.prototype=
newperson()
;//繼承
firstwife.prototype.construct=firstwife;
//繼承
//var grandson=new firstwife();
firstwife.prototype=
}var grandson=
newfirstwife()
;grandson.
sayhi()
;//hi,nicolas
通過除錯,此時grandson.sayhi()返回的是hi,nicolas,而不是hi,jxg,可以看到
grandson一開始查詢自己sayhi()方法,然後從建構函式原型找,此時因為例項建立在
重寫firstwife建構函式前,所以firstwife原型this指標指向空,於是繼續向上找到
person的原型的sayhi()方法;因此返回hi,nicolas
struct繼承例子
include using namespace std enum breed struct mammal mammal int getage const void setage int age int getweight const void setweight int weight void sp...
繼承 介面小例子
package doctors public abstract class person 獲取名字 public string getname 行走,子類可以不重寫 public void walk 思考,抽象方法,子類必須對其進行重寫 public abstract void think pack...
繼承 super final的例子
繼承 super final的例子 設計類 手機 資料 螢幕尺寸,型號名 功能 打 發簡訊 安卓手機 資料 處理器,螢幕尺寸,型號名 功能 打 發簡訊,root系統 蘋果手機 資料 處理器,螢幕尺寸 型號名 功能 打 發簡訊,指紋識別,imessage 其他類不能訪問 需求 a 要求安卓手機,蘋果手...