◆ オブジェクト自体をアクセス関数にしてみた
◆ 言語仕様でこうなってないと使いづらい

ここで 少し書いた a.b.c.d へアクセスする方法

そのままだと 途中に undefined が来るとエラーになるので 綺麗で楽に書けてエラーを出さずに取得する方法はー と考えていたら見た目だけは綺麗な方法が思いつきました


function Aobj(){
return function a(key){
if(a[key] == undefined){
return new Aobj
}else{
return a[key]
}
}
}
これを定義しておきます

使い方はこうなります
var o = new Aobj
o.a = 1
o("a") // 1

var a = Aobj()
var b = Aobj()
var c = Aobj()

a.b = b
b.c = c
c.d = 100

a("b")("c")("d") // 100
a("m")("n")("o") // Aobj
オブジェクト自体を関数にしておいて 自分を実行するときに引数をキーとしてオブジェクトから値を取り出します
null, undefined 対策で 存在しない(null, undefined)のプロパティへのアクセスなら 空の関数オブジェクトを返してチェーンできるようにします


見た目は 綺麗です

が 毎回つくるために関数通さないといけないのとオブジェクトリテラルで作れないので使いづらいです
言語自体の機能としてあるわけじゃないとこの方法は微妙なところです

また すべてのオブジェクトが 自分のプロパティを取得する関数になってしまうので 自分で定義した関数をオブジェクトとして使うことができなくなってしまいます
そういう場合だけ特別 としてしまうと a("b")("c")("d") 形式で書けたり書けなかったりになるので 統一性なくなって結局使わなくなりそうです