私は別のオブジェクトを返すオブジェクトを1つ持ち、すべてのマイクロインスタンスにいくつかのデータを渡します。これが私が達成しようとしていることです。別のクラスインスタンスを返す1つのクラスインスタンスを持つことはできますか?
export class Macro {
constructor(props) {
return (props) => {
return Micro(props)
}
}
}
export class Micro {
constructor(props) {
this.macro = props
}
}
let MicroInstance = new Macro({'happy': true})
let instance = new MicroInstance()
console.log(instance.macro.happy) // true
これは、エラーがスローされます。
_classCallCheck(this, Macro);
^
ReferenceError: Macro is not defined
アップデート1)
ここでは、このためのより現実的なユースケースです。私は、定義クラスからの情報を使用するカスタムエラーオブジェクトを作成しようとしています。つまり、同じパラメータをすべてLangError
クラスに渡す必要はありません。 「sはそれに答えるJonathan Lonowski
を使用して
let languages = {
"en": {
"login_errors": {
"invalid_name": "Invalid Name: {name}!"
}
},
"jp": {
"login_errors": {
"invalid_name": "無効な名前: {name}"
}
},
"es": {
"login_errors": {
"invalid_name": "Nombre no válido: {name}!"
}
}
}
let LangError = new LangErrorDefinition({languages, nestedLocalesProp: 'login_errors'})
let error = new LangError('invalid_name', { name: 'Thomas' })
console.log(error.messages)
// { en: 'Invalid Name: Thomas!',
// jp: '無効な名前: Thomas',
// es: 'Nombre no válido: Thomas!' }
アップデート2)
ここjsfiddle動作します。
class Macro {
constructor(props) {
return() => {
return new Micro(props)
}
}
}
class Micro {
constructor(props) {
this.macro = props
}
}
let MicroInstance = new Macro({'happy': true})
let instance = new MicroInstance()
console.log(instance.macro.happy) // true
しかし、それでも私のローカルファイルにはバベルのエラーが表示されます。
/Users/thomasreggi/Desktop/project/test/error-suite.js:99
_classCallCheck(this, Macro);
^
ReferenceError: Macro is not defined
at new Macro (error-suite.js:94:7)
at Object.<anonymous> (error-suite.js:108:21)
at Module._compile (module.js:398:26)
at loader (/Users/thomasreggi/.nvm/versions/node/v5.3.0/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/Users/thomasreggi/.nvm/versions/node/v5.3.0/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:430:10)
at /Users/thomasreggi/.nvm/versions/node/v5.3.0/lib/node_modules/babel-cli/lib/_babel-node.js:161:27
at Object.<anonymous> (/Users/thomasreggi/.nvm/versions/node/v5.3.0/lib/node_modules/babel-cli/lib/_babel-node.js:162:7)
アップデート3)
上記のエラーは、私がbabel-node
と2015
とreact
プリセットを使用しています、称賛日本語の文字を持つためです。
https://gist.github.com/reggi/cb9e83ce74de17da1ca2935b0bb3ff1d
これは正しいですか?このスクリプトを実行している環境でサポートしていますか? –
私はこの新しいJSのものはよくわかりませんが、あなたはコンストラクタからオブジェクトを返すと確信していますか?ファクトリメソッドがあるかもしれませんが、コンストラクタから何かを返すことは、私に大きな悪徳のように聞こえます。 –
@NickZuberこれはES6ですが、これを行う正しい方法だとは思いません。 @JanTuroň 'Macro'オブジェクトが' Micro'のためのファクトリであるので、私はコンストラクタからオブジェクトを返したいと思います。 – ThomasReggi