2016-05-27 18 views
1

JSでモデルスクリプトを作成しましたので、オブジェクトを渡していくつかのロジックと値を追加できます。 get/setを使って値を生成しますが、コードを実行するとRangeErrorがスローされます。最大呼び出しスタックサイズを超えています。誰もがこのエラーを修正するか知っていますか?RangeError:Node.jsの最大呼び出しスタックサイズを超えました

var model = { 
    get id() { 
     return this.id ; 
    }, 
    set id(id) { 
     this.id = id || ''; 
    }, 
    get filename(){ 
     return this.filename ; 
    }, 
    set filename(name){ 
     this.filename = name || ''; 
    }, 
    get savename(){ 
     return this.savename ; 
    }, 
    set savename(name){ 
     this.savename = name || ''; 
    }, 
    get filetype(){ 
     return this.filetype ; 
    }, 
    set filetype(name){ 
     this.filetype = name || ''; 
    } 
}; 

module.exports = function(parm){ 
    model.id = parm.id ; 
    model.filename = parm.filename ; 
    model.savename = parm.savename ; 
    modle.filetype = parm.filetype; 
    return model ; 
}; 

答えて

1
get id() { 
    return this.id ; 
}, 

あなたは、 "ID" と呼ばれるプロパティのゲッターを定義しました。 getterの実装では、オブジェクトからプロパティ "id"の値を返す必要があります。

プロパティ "id"の値を取得するために、システムは最初にそのプロパティのゲッターがあるかどうかをチェックします。この場合、getterが呼び出されます。

同じことがセッターになります。

オブジェクトプロパティの値以外の場所に実際のプロパティ値を保持する必要があります。そうしないと、問題が発生した場合とまったく同じ問題が発生します。

get id() { 
    return this._id; 
}, 
set id(value) { 
    this._id = value || ""; 
}, 

あなたはそれを正確に行う必要はありません。それはうまくいく方法です。

+0

ありがとう、エラーは間違っていました。私は病気にはget/setと_varの両方があるので、これは私が望むものを達成する最も最適な方法ではないかもしれないと思います。 – John

関連する問題