私はnodejsの初心者です。 私は、スキーマを使用してJSONを構築するためのヘルパ関数を作成しています。設定値に関数(主にセッター)を追加しようとしています。以下は簡単なバージョンです。function.prototypeに動的に関数を追加する
function Task() {
this.action = {};
this.schedule = {};
}
function capitalize(str) {
return `${str[0].toUpperCase()}${str.slice(1)}`;
}
const scheduleProps = [
'startAt',
'repeatEvery',
'endAt',
'count',
'interval'
];
私はobj.schedule.repeatEveryが値10
obj = new Task();
obj.setRepeatEvery(10);
が含まれていることを期待し、以下の方法を呼び出すときに代わりに私が
取得for(var i=0; i<scheduleProps.length; i++) {
Object.defineProperty(Task.prototype, `set${capitalize(scheduleProps[i])}`, {
enumerable: true,
configurable: false,
writable: true,
value: (value) => {
this.schedule[scheduleProps[i]] = value;
}
});
}
動的そこにメソッドを追加
TypeError: Cannot set property 'repeatEvery' of undefined
私も設定しようとしましたそう
Task.prototype[`set${capitalize(scheduleProps[i])}`] = (val) => {
this.schedule[scheduleProps[i]] = val;
}
この場合のような機能は、私は動的にfunction.prototypeにメソッドを設定するにはどうすればよい
TypeError: Cannot set property 'interval' of undefined
at Task.(anonymous function) [as setRepeatEvery]
を取得しますか?あなたの助け
どこループ実行はありますか?ループがメンバメソッド内で実行されない場合、Lambda(矢印)関数は正しい 'this'スコープを持ちません。通常の 'function'を使ってみてください –
恐ろしいバラツ!私はそれをコンストラクタに移さなければなりませんでした。関数をメイン関数プロトタイプに設定するためにラムダ関数としてそれらを持つ必要があります –
JSONはXMLやYAMLのようなデータ交換形式です。あなたの例ではJSONが表示されません。 JavaScriptオブジェクトはJSONではありません。 –