私は多くのメソッドを持つオブジェクトを作成し、ファイルが非常に長くなるのを避けようとしています。問題は、オブジェクト内の他の情報を参照するメソッドの一部です。私はこのような何かをできるようにしたいと思います:ファイル間で 'これ'を共有する
index.js
var User = function(first, last){
this.firstname = first;
this.lastname = last;
};
User.prototype.name = require('./methods/name.js')
方法/ name.js
module.exports = {
full: function(){
return this.firstname + " " + this.lastname;
},
formal: function(){
return "Mr. " + this.lastname;
}
};
this
はこの中では動作しませんなぜそれが理にかなっています状況が、他のファイルを参照できる別の解決方法がありますか?私が考えることができるのは、fsとrequireの代わりにeval()
を使用しているということだけですが、それは私のハック、または長いファイルを持っていることの明白なようです。何か良いことがありますか?
プロトタイプに約35個のオブジェクトがあり、それぞれに平均4つのメソッドがあることを計画しています。提案?ありがとう。
バインドこのように、これらの機能あなたができる
index.js //
モジュラーコードを維持する必要があります。プロトタイプ上にオブジェクトをネストすることはできません。 'this'は常にインスタンス内ではなくチェーン内の最後のオブジェクトを参照します。 – Bergi単に 'require'の代わりにメソッドを明示的にリストすることができます。それらを'束縛 'して個々のフィールドに割り当てることができます。同様に: 'var req = require( 'x.js'); User.prototype.name = {full:req.full.bind(this)、formal:req.formal.bind(this)}; '各オブジェクトにループを使用することもできます。 –
これは私にとって悪いデザインのような感じです。 – Paul