我是js OO編程的新手,我無法找到此錯誤的解決方案。 我聲明下面的類層次結構:父類的方法在javascript中的子類中未定義
function FML_Field(id){
this.id= id;
this.optional= true;
this.node= null;
if(this.id === undefined){
throw ""; //should provide Id;
}
var this.node= document.getElementById(this.id);
if(this.node === null){
throw "";
}
this.setAsOptional= function(){
this.optional= true;
};
this.setAsRequired= function(){
this.optional= false;
};
this.isOptional= function(){
return this.optional;
};
}
及其兒子:
function FML_Text(id){
this.prototype= new FML_Field(id);
FML_Text.prototype.constructor= FML_Text;
this.maxLength= false;
this.minLength= false;
this.setMaxLength= function(maxLength){
this.maxLength= maxLength;
}
this.getMaxLength= function(){
return this.maxLength;
}
this.hasMaxLength= function(){
return this.maxLength !== false;
}
}
然後我用下面的代碼進行:
var first_name = new FML_Text("first_name");
first_name.setAsRequired(); /*throws an error: setAsRequired is not defined*/
有什麼不對?我已經檢查了JavaScript控制檯:first_name被定義,但setAsRequired()不是。像first_name.setMaxLength()這樣的函數調用沒有問題。
預先感謝您。
預先感謝您
我可以指點你這個StackOverflow的答案嗎?我相信它會幫助您更多地瞭解JavaScript OOP。這是非常好的和exaustive:http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript – dmarucco 2011-04-22 08:44:54