JavaScript

プロパティへのアクセスで文字列をつくる

More than 1 year has passed since last update.

やってみたいこと

const a = This.is.a.pen;
// a = "This is a pen"

Thisオブジェクトのisプロパティのaプロパティのpenプロパティにアクセスすると"This is a pen"という文字列になる的なことをやってみたかった

やりかた

Proxyでできる

const L = function(){
    const text = [];
    const handler = {
        get: function(target, name){
            if(name === "_$"){
                return function(postfix){
                    if(postfix){
                        return text.join(" ") + postfix;
                    }else{
                        return text.join(" ");
                    }
                }
            }else if(name === "_"){
                return function(token){
                    text.push(token);
                    return p;
                }
            }else if(name === "$"){
                return function(){
                    text.push("\n");
                    return p;
                }
            }else{
                text.push(name);
                return p;
            }
        }
    }
    const p = new Proxy({}, handler);
    return p
}
const t = L().I.have._(2).apples.$()
             .This.is.a.pen._$(".");

// t === "I have 2 apples
//        This is a pen."
  • _$()で文字列出力
  • $()で改行
  • _(args: any)で途中に何か文字列とか追加

にしてみた

何につかえるの?

...