0

プロパティ(キー)を持つオブジェクトをデコレータ(値)にマップしたいと思います。可能であれば弱い地図を使用したいと思います。 Weak Mapsが文字列をキーとして受け入れない点を除いて、文字列を使って作業している解決策があります。これはマップや弱マップで可能ですか?ES6オブジェクトをデコレータにマップする

'use strict'; 

class Accordion { 

    constructor() {} 

} 

let Decorators = new Map(); 

Decorators.set({nodeName: 'tag-name-here', component: 'accordion'}, (client) => { return new Accordion(client) }); 

class Client { 

    constructor() { 

     let key = {nodeName: 'tag-name-here', component: 'accordion'} 
     let decorator; 

     if (Decorators.has(key)) { 

      decorator = Decorators.get(key)(this); 

     } 

     console.log(decorator); //undefined, unless I use a string as a key. 
    } 
} 

new Client(); 

答えて

1

これは、キーの別のインスタンスので動作しません:{nodeName: 'tag-name-here', component: 'accordion'}は、新しいメモリ位置にするたびにマップされますので、あなたの希望値をこのように取得することができなくなります。

'use strict'; 
 

 
class Accordion { 
 

 
    constructor() {} 
 

 
} 
 

 
let Decorators = new Map(); 
 

 
const key = {nodeName: 'tag-name-here', component: 'accordion'}; 
 
Decorators.set(key, (client) => { return new Accordion(client) }); 
 

 
class Client { 
 

 
    constructor() { 
 
     let decorator; 
 

 
     if (Decorators.has(key)) { 
 

 
      decorator = Decorators.get(key)(this); 
 

 
     } 
 

 
     console.log(decorator); // this should return an object 
 
    } 
 
} 
 

 
new Client();

:あなたのコードは次のようになりますように、それを動作させるために、あなたは、新しい変数に設定する必要があります
関連する問題